20 Jun 2013 00:23

## 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
```
20 Jun 2013 16:23

### Re: TH clause Pat selection

```Have you tried dataToPatQ and dataToExpQ?

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
>
> _______________________________________________
```

20 Jun 2013 22:47

### Re: TH clause Pat selection

Hi.

On 19 June 2013 23:23, Brian Lewis wrote:
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:

Hope this helps,
Ozgur

```_______________________________________________