Whoops, sorry for the bad code in my last message. I mean of course that the 
problem is that

ConT (mkName "[]") /= ListT

Regards,

Eric


On Oct 7, 2012, at 12:08 , Eric M. Pashman <eric.pash...@gmail.com> wrote:

> Nicolas,
> 
> Intended usage seems to be something like
> 
> AppT ListT $ ConT . mkName $ "Int"
> 
> That works. So it seems that there is indeed no way to construct the 
> syntactically special list type from its (valid) name, but it can easily be 
> done as above.
> 
> In my opinion, it should be possible to do what we've been trying -- ConT 
> (mkName "[]") `AppT` ConT "Char" -- or whatever. The problem seems simply to 
> be that
> 
> ConT . mkName $ "[]" \= ListT
> 
> I don't know the first thing about the GHC source, but I would imagine that's 
> easily fixable if the behavior we both expected is more broadly desired.
> 
> Regards,
> 
> Eric
> 
> On Oct 7, 2012, at 11:24 , Nicolas Frisby <nicolas.fri...@gmail.com> wrote:
> 
>> 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 <eric.pash...@gmail.com> 
>> 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
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to