к
Size: a a a
[
к

[
[
JS
(input, f) <- p1 input
(input, a) <- p2 input
pure (input, f a)[
JS
JS
AP
(input, f) <- p1 inputрассахаривается в
...
p1 input >>= \(input, f) -> ...
или даже(>>=) (p1 input) (\(input, f) -> ...)AP
JS
do<-, а для остального оставить. да, знаю, "пиши патчи в GHC"JS
let a = f a, то вместо затенения получим рекурсию, но это не потому что затенение не работает, а потому что рекурсия работаетJS
AP
AP
IK
(input, f) <- p1 input
(input, a) <- p2 input
pure (input, f a)