λ { (a: $[A]) =>
producing { (b: ??[B]) =>
// ...
}
} : A -⚬ B
where b is a placeholder for the out-port, is currently implemented via a forward lambda on an inverted expression (??[B] = $[-[B]]).
This has 2 drawbacks:
It is only available if the the underlying DSL (-⚬) has inversions.
The resulting point-free AST contains extra inversions.
However, reverse lambdas can be implemented without inversions. Note that it will require some changes (generalizations) in the implementation of lambda translation, though.
The reverse lambda, i.e.
producing
inwhere
b
is a placeholder for the out-port, is currently implemented via a forward lambda on an inverted expression (??[B] = $[-[B]]
).This has 2 drawbacks:
-⚬
) has inversions.However, reverse lambdas can be implemented without inversions. Note that it will require some changes (generalizations) in the implementation of lambda translation, though.