Re: [Haskell-cafe] Client-extensible heterogeneous types (Duck-typed variadic functions?)

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

On 2010 Oct 14, at 05:27, Brandon Moore wrote:
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 }
At first blush, I hated all those Strings hiding the actual type information. Thinking about it a bit more, I think that's exactly right: when crossing the interface to the outside world, all data have type String: the user reads Strings and types back Strings. A variety of things happens behind those strings, but at the interface, they're all strings.
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.
Oh, I love the idea of Using QuickGen's Gen for this purpose! (And it would finally give me the incentive to get to understand the beast properly.)
easyMultiplication : Gen Instance
participants (2)
-
Brandon Moore
-
Jacek Generowicz