Grundsätzlich:
class Size b => Problem p i b | (p, i) -> b where
describe :: p -> i -> Doc
verify :: p -> i -> b -> Reporter ()
initial :: p -> i -> b
instance Problem Analyse ( NFA Char Int ) Exp
Utilities:
class ToDoc a where toDoc :: a -> Doc class Reader a where reader :: String -> a class Size a where size :: a -> Int