[GHC] #6062: TH treats non-functions in function position inconsistently
GHC
cvs-ghc at haskell.org
Mon Apr 30 16:39:58 CEST 2012
#6062: TH treats non-functions in function position inconsistently
------------------------------+---------------------------------------------
Reporter: heisenbug | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.5 | Keywords:
Os: Unknown/Multiple | Architecture: Unknown/Multiple
Failure: None/Unknown | Testcase:
Blockedby: | Blocking:
Related: |
------------------------------+---------------------------------------------
I start GHCi like this:
{{{
~/bin/ghci -XTemplateHaskell
}}}
My aim is to use TH to rewrite certain application-looking (syntactically)
constructs to semantically valid haskell code, that passes the type-
checker (c.f. Conor McBride's "idiom brackets").
But I already fail at very simple things, because GHC seems to type-check
the TH quotation's innards...
This works:
{{{
Prelude> :t [| id id |]
[| id id |]
:: Language.Haskell.TH.Syntax.Q Language.Haskell.TH.Syntax.Exp
}}}
This is also accepted, though it is clearly not typeable:
{{{
Prelude> :t [| 1 1 |]
[| 1 1 |]
:: Language.Haskell.TH.Syntax.Q Language.Haskell.TH.Syntax.Exp
}}}
Encouraged by this I try:
{{{
Prelude> :t [| False True |]
<interactive>:1:4:
Couldn't match expected type `Bool -> t0' with actual type `Bool'
The function `False' is applied to one argument,
but its type `Bool' has none
In the Template Haskell quotation [| False True |]
In the expression: [| False True |]
}}}
Bummer! Somehow the type-checker does get into business with "expressions"
inside quotations.
I believe this is a bug, and a quotation should be built for {{{[| False
True |]}}} in spite of {{{False True}}} not being typeable.
I know that using quasi-quotations I can build my own parser and rewrite
engine around this, but that is a tad heavyweight for me and I'd like to
understand the root of the above inconsistency and why the type checker
gets active in some cases above, but not in others.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/6062>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list