Proxies, Kleisli, |||

1
2
3
4
5
6
7
8
9
10
ghci> let pipe1 = mapD (\x -> ("seen on left", x))
ghci> let pipe2 = mapD (\x -> ("seen on right", x))
ghci> let pipe3 = runKleisli (Kleisli pipe1 ||| Kleisli pipe2)
ghci> :t pipe3
  :: (blah blah) =>
     Either b1 b1 -> p b1 t b1 ([Char], t) m b

Notice how "Either b1 b1" appears on the left of the ->,
but just plain "b1" appears on the right. This is problematic,
since Proxies should have the same thing in those two places.