*Main> :t concatMap
concatMap :: (a -> [b]) -> [a] -> [b]
和
*Main> :t replicate
replicate :: Int -> a -> [a]
那么怎么才能做到
*Main> :t concatMap . replicate
concatMap . replicate :: Int -> [b] -> [b]
给出:
*Main> :t (.)
(.) :: (b -> c) -> (a -> b) -> a -> c
?
我的意思是,我对函数组合的理解是,replicate
应该返回任何concatMap
期望的参数,以使(.)
能够工作。但它不会是这种情况。那么有什么问题呢?
你问为什么'a - > [a]'匹配a - > [b]'? – sepp2k 2012-08-03 21:32:54
@ sepp2k nope,'a's和'b's部分非常清晰(我认为) – artemave 2012-08-03 22:31:29
+1为史诗般的问题标题。脑损伤肯定是高级函数式编程的共同结果。 ;-) – MathematicalOrchid 2012-08-06 13:41:19