Skip to content

Arrows: correctly query arrow methods (#17423)

Sylvain Henry requested to merge hsyl20/ghc:hsyl20/arrows/17423 into master

Consider the following code:

proc (C x y) -> ...

Before this patch, the evidence binding for the Arrow dictionary was attached to the C pattern:

proc (C x y) { $dArrow = ... } -> ...

But then when we desugar this, we use arrow operations ("arr", ">>>"...) specialised for this arrow:

let
    arr_xy = arr $dArrow -- <-- Not in scope!
    ...
in
    arr_xy (\(C x y) { $dArrow = ... } -> ...)

This patch allows arrow operations to be type-checked before the proc itself, avoiding this issue.

Fix #17423 (closed)

Merge request reports