[GHC] #7828: RebindableSyntax and Arrow
GHC
ghc-devs at haskell.org
Thu May 29 20:30:40 UTC 2014
#7828: RebindableSyntax and Arrow
----------------------------------------------+----------------------------
Reporter: AlessandroVermeulen | Owner:
Type: bug | jstolarek
Priority: normal | Status: new
Component: Compiler (Type checker) | Milestone: 7.10.1
Resolution: | Version: 7.6.2
Operating System: Unknown/Multiple | Keywords:
Type of failure: GHC rejects valid program | Architecture:
Test Case: | Unknown/Multiple
Blocking: | Difficulty: Unknown
| Blocked By:
| Related Tickets:
----------------------------------------------+----------------------------
Comment (by simonpj):
Yes, I think if we made the change suggested here, arrow notation would
become rebindable.
I think the idea would be that each construct becomes decorated with the
overloaded operations necessary to desugar it. Indeed, in the case of
monad syntax, the effect is exactly as if you first desugared and then
typechecked. For example `x <- e; rest` desugars into something like `e
>>= \x -> rest`. So to typecheck `x <- e` (a `BindStmt`), we look up
`>>=`, instantiate its type, unify `e`'s type with the first argument type
of `>>=`, and so on. We hang onto the instantiated `>>=` in the
typechecked `BindStmt`.
The idea is to do the same for arrows, but I have little idea of how hard
it is. But the thought experiment of first desugaring and then type
checking may be an instructive one.
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7828#comment:8>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list