The issue you had with applications of the [] type seems to be more
insidious than my last email made it out to be. This expression

(   $(return $ ConE (mkName "[]")) ::
    $(return $ ConT (mkName "[]") `AppT` ConT ''Char)
)

fails with "[] is applied to too many arguments". I'm thinking that
the "[]" in the type is being resolved somehow to the the [] data
constructor, not the [] type constructor.

This seems specific to []; the following works for tuples, even though
the data and type constructor also share a string name.

$(return $ ConE (mkName "(,)") `AppE` LitE (CharL 'c') `AppE` LitE
(CharL 'a')) ::
$(return $ ConT (mkName "(,)") `AppT` ConT ''Char      `AppT` ConT ''Char)

I haven't yet narrowed down where the mkName'd string is
(inappropriately?) resolved in the GHC source.

Eric, special-casing for ArrowT probably avoids this problem for you.
The only thing to glean from this email is that you ideally wouldn't
need to worry about the special-casing for your current application —
I think there's a TH bug at play, though I haven't found an open GHC
ticket for it and it may very well still be a known issue.

On Sun, Oct 7, 2012 at 10:15 AM, Eric M. Pashman <[email protected]> wrote:
> Nicolas, thanks for the welcome, and thanks for pointing out the additional 
> 'Type' constructors!
>
> I'd looked over the available constructors, but apparently not very well. The 
> 'ListT', 'TupleT', 'ArrowT', etc., constructors are precisely what I need to 
> make this work in a straightforward fashion.
>
> So I don't actually have a problem making the right 'Name' value, just a 
> problem reading the TH source. Well, that's that. ...
>
> Many thanks,
>
> Eric

My pleasure.

However,

_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to