haskell combinators s-combinator

S combinator en Haskell



combinators s-combinator (3)

¿Se puede expresar un análogo del combinador S en Haskell usando solo funciones estándar (sin definirlo por ecuación) y sin usar lambda (función anónima)? Espero que sea de tipo (a -> b -> c) -> (a -> b) -> a -> c .

Por ejemplo, un análogo del combinador K es simplemente const .

De hecho, estoy tratando de expresar la función /fx -> fxx usando funciones estándar, pero no puedo pensar en ninguna función no lineal estándar con la cual comenzar (esa es una función que usa su argumento más de una vez).


Aunque al principio no lo parece, ap es el combinador S (y join es el combinador que realmente buscas).


También se puede utilizar (=<<), (>>=) .

Y están incluidos en Prelude.

instance Monad ((->) r) where return = const f >>= k = / r -> k (f r) r