SiHaskell: composición de la función acaba de mi cerebro dañado
*Main> :t concatMap
concatMap :: (a -> [b]) -> [a] -> [b]
y
*Main> :t replicate
replicate :: Int -> a -> [a]
entonces, ¿cómo funciona eso
*Main> :t concatMap . replicate
concatMap . replicate :: Int -> [b] -> [b]
dado:
*Main> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
?
Quiero decir, mi comprensión de la composición de funciones es que replicate
debe devolver lo que concatMap
espera como argumentos para que (.)
funcione. Pero no parece ser el caso. Entonces, ¿cuál es el truco?
¿Estás preguntando por qué 'a -> [a]' coincide con 'a -> [b]'? – sepp2k
@ sepp2k no, la parte 'a's y' b's es bastante clara (creo) – artemave
+1 para el título de la pregunta épica. El daño cerebral es definitivamente una consecuencia común de la programación funcional avanzada. ;-) – MathematicalOrchid