Refactor the implementation of arrow notation
The implementation of arrow notation is not really satisfactory. See #1662 (closed) for some background.
To fix it properly we need to re-factor the way that arrows are typechecked. Ross and I discussed this. Our preliminary plan is this.
- Instead of re-using
HsExprfor commands, make a new data type. (C.f. the comments inHsExprline 540 or so.) - That will allow the renamer to decorate the (now command-specific) tree with what variables are in scope where, and that in turn will greatly simplify the desugarer. (The desugarer is currently duplicating much of what the renamer does.)
- We'll need think about constraint gathering for "holes in the scope". cf #1662 (closed)
Trac metadata
| Trac field | Value |
|---|---|
| Version | 6.6.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |