因此,复制列表元素给定次数的函数看起来像这样
rep :: Int -> [a] -> [a]
rep = concatMap . replicate
根据定义(f . g) x = f(g(x))
但
(concatMap (replicate 4 "abc"))
与(concatMap . replicate) 4 "abc"
的工作方式不同。事实上它根本不起作用。而concatMap的第一个参数必须是函数。我对此感到困惑。那点免费版甚至可以工作吗?任何人都可以解释一下。
答案 0 :(得分:6)
你是(f . g) x = f (g x)
,但这并不代表(concatMap . replicate) 4 "abc" = concatMap (replicate 4 "abc")
。相反,它意味着(concatMap . replicate) 4 "abc" = concatMap (replicate 4) "abc"
,这是真的。