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).
También se puede utilizar (=<<), (>>=)
.
Y están incluidos en Prelude.
instance Monad ((->) r) where
return = const
f >>= k = / r -> k (f r) r
s = (<*>)
para la instancia Applicative
((->) r)
.