[GHC] #5267: Arrow command combinators
GHC
cvs-ghc at haskell.org
Wed Jun 22 16:04:21 CEST 2011
#5267: Arrow command combinators
----------------------------------------+-----------------------------------
Reporter: peteg | Owner:
Type: bug | Status: closed
Priority: normal | Milestone:
Component: Compiler | Version: 7.0.3
Resolution: invalid | Keywords:
Testcase: | Blockedby:
Difficulty: | Os: Unknown/Multiple
Blocking: | Architecture: Unknown/Multiple
Failure: GHC rejects valid program |
----------------------------------------+-----------------------------------
Changes (by ross):
* status: new => closed
* resolution: => invalid
Comment:
GHC seems to be performing properly here.
In each case GHC is objecting to {{{(| (arr id) (returnA -< x) |)}}},
saying the type of the first argument of a command form has the wrong
shape. Since you've used an operator with one argument, it's expecting
the operator to have the form
{{{
forall e. a (...(e,t1), ... tn) t -> a (...(e,t1'), ... tn') t'
}}}
for some arrow {{{a}}}, and with {{{e}}} not free in the other t's (see
Section 7.10.4 of the GHC User's Guide). In your case the operator,
namely {{{(arr id)}}}, has type {{{forall a' b. Arrow a => a' b b}}}. GHC
has instantiated {{{a'}}} as {{{->}}} to match the above, and then
generalized and complained that the type of the argument is a type
variable instead of an arrow type. Perhaps you were expecting it to use
the type of the argument {{{(returnA -< 3)}}} to instantiate {{{b}}} to
{{{a e Int}}} before generalizing, but this behaviour is consistent with
the treatment of rank-2 types elsewhere.
I'm not sure what you were trying to do here. Maybe the mailing list
would be a good place to discuss it.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5267#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the Glasgow-haskell-bugs
mailing list