If you just want instances of questions you can keep it simple. How about something isomorphic to
data Instance = Instance { question : String, answer : String, check : String -> Bool } You could make helper functions similar to your old code, like addition : (Int , Int) -> Instance You might handle problem families by taking a random number generator, or maybe using QuickCheck's Gen monad. easyMultiplication : Gen Instance _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe