TH clause Pat selection

I want to use TH to generate functions like foo :: c -> h foo ... = ... foo ... = ... ... from lists of pairs :: [(c, h)] For example, $(genFoo ''Int ''Bool [(0,False), (1,True)]) would generate foo 0 = False foo 1 = True The problem is, I don't know how to generate the function's clauses. "foo 0 = ..." seems to be a LitP pattern. But "foo True = ..." seems to be a ConP pattern. The appropriate pattern depends on type c. Here's code with more explanation and examples: http://hpaste.org/90163

Have you tried dataToPatQ and dataToExpQ? http://hackage.haskell.org/packages/archive/template-haskell/latest/doc/html... Geoff On 06/19/2013 11:23 PM, Brian Lewis wrote:
I want to use TH to generate functions like foo :: c -> h foo ... = ... foo ... = ... ... from lists of pairs :: [(c, h)]
For example, $(genFoo ''Int ''Bool [(0,False), (1,True)]) would generate foo 0 = False foo 1 = True
The problem is, I don't know how to generate the function's clauses. "foo 0 = ..." seems to be a LitP pattern. But "foo True = ..." seems to be a ConP pattern. The appropriate pattern depends on type c.
Here's code with more explanation and examples: http://hpaste.org/90163
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

Hi.
On 19 June 2013 23:23, Brian Lewis
The problem is, I don't know how to generate the function's clauses. "foo 0 = ..." seems to be a LitP pattern. But "foo True = ..." seems to be a ConP pattern. The appropriate pattern depends on type c.
I've used haskell-src-meta for this purpose before. See: http://hackage.haskell.org/packages/archive/haskell-src-meta/0.6.0.2/doc/htm... Hope this helps, Ozgur
participants (3)
-
Brian Lewis
-
Geoffrey Mainland
-
Ozgur Akgun