¿Por qué funciona la aplicación parcial de funciones con diferentes firmas?Explicación de la aplicación parcial - join
Tome Control.Monad.join
como ejemplo:
GHCi> :t (=<<)
(=<<) :: Monad m => (a -> m b) -> m a -> m b
GHCi> :t id
id :: a -> a
GHCi> :t (=<<) id
(=<<) id :: Monad m => m (m b) -> m b
¿Por qué se acepta id :: a -> a
en lugar de (a -> m b)
argumento, ya que son obviamente diferentes?
Parece simple y directo, gracias. ¿La firma final de = << id se deduce de algún modo del valor de retorno para hacer coincidir los argumentos del resto de la función? –
@David sí, creo que eso es básicamente correcto. –