もしも
*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
(.)