id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	os	architecture	failure	difficulty	testcase	blockedby	blocking	related
1777	Refactor the implementation of arrow notation	simonpj	ross	"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
"	task	closed	lowest	7.6.2	Compiler	6.6.1	fixed			Unknown/Multiple	Unknown/Multiple	None/Unknown	Unknown				
