Ticket #1777 (closed task: fixed)
Refactor the implementation of arrow notation
| Reported by: | simonpj | Owned by: | ross |
|---|---|---|---|
| Priority: | lowest | Milestone: | 7.6.2 |
| Component: | Compiler | Version: | 6.6.1 |
| Keywords: | Cc: | ||
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | None/Unknown | Difficulty: | Unknown |
| Test Case: | Blocked By: | ||
| Blocking: | Related Tickets: |
Description
The implementation of arrow notation is not really satisfactory. See #1662 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 HsExpr for commands, make a new data type. (C.f. the comments in HsExpr line 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
Change History
Note: See
TracTickets for help on using
tickets.
