
19 Jul
2002
19 Jul
'02
8:04 a.m.
Beeing able to derive instances of DeepSeq would be nice too.
Here is an implementation using GHC's derivable type classes. Cheers, Ralf ---- ghc -c -fglasgow-exts -fgenerics -package lang Eval.lhs
module Force where import Generics
class Force a where force :: a -> ()
force{|Unit|} a = a `seq` ()
force{|b :+: c|} a = case a of Inl b -> force b Inr c -> force c
force{|b :*: c|} a = case a of b :*: c -> force b `seq` force c
instance Force Char where force a = a `seq` () instance Force Int where force a = a `seq` ()
eval :: (Force a) => a -> a eval a = force a `s