Уже в анализе v(yy)(yz) вижу сужение возможностей. Если тип y полиморфный, то типы аргументов v могут и не совпадать:
> :set -XRankNTypes
> :set -XScopedTypeVariables
> :t \v (y :: forall a. a -> a) z -> v (y y) (y z)
\v (y :: forall a. a -> a) z -> v (y y) (y z)
:: ((a -> a) -> a1 -> t) -> (forall a2. a2 -> a2) -> a1 -> t
no subject
Date: 2013-06-27 06:52 am (UTC)