I need a function with type Pipe a b m r -> Pipe (a, c) (b, c) m r
.
But no matter how much I play with for
, ~>
or >~
; I can not match the types properly.
Can you help me?
I need a function with type Pipe a b m r -> Pipe (a, c) (b, c) m r
.
But no matter how much I play with for
, ~>
or >~
; I can not match the types properly.
Can you help me?
I don't think it's possible in general. Suppose we did manage to write it:
What behavior should
hypotheticalLift (yield b)
have? Presumably it should be the same asyield (b, c)
for somec
-- but whichc
, and why?