"class " proposal Re: [Haskell-cafe] One thought: Num to
0as ? to list?
brianh at metamilk.com
Tue Aug 22 14:04:09 EDT 2006
Bulat Ziganshin wrote:
> from one my module:
> copyStream :: (BlockStream h1, BlockStream h2, Integral size)
> => h1 -> h2 -> size -> IO ()
> in my library and found the way to simplify most of their signatures:
> copyStream :: BlockStream* -> BlockStream** -> Integral -> IO ()
> i think that second block of signatures is an order of magnitude more
I think template haskell could do this translation. Eg if you declared some
dummy phantom types so the arg to the template function could be parsed, and
as a way of telling the function which types were to be replaced by type
variables with class constraints the block of signatures would just be
declared in a splice:
copyStream :: BlockStream' -> BlockStream'' -> Integral' -> IO ()
Though I leave the definition of expandSigs :: Q [Dec] -> Q () as a little
exercise for the reader... :-)
Best regards, Brian.
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
More information about the Haskell-Cafe