与点免费样式代码混淆

时间:2014-03-18 08:46:12

标签: haskell pointfree

因此,复制列表元素给定次数的函数看起来像这样

rep :: Int -> [a] -> [a]
rep = concatMap . replicate

根据定义(f . g) x = f(g(x))

(concatMap (replicate 4 "abc"))(concatMap . replicate) 4 "abc"的工作方式不同。事实上它根本不起作用。而concatMap的第一个参数必须是函数。我对此感到困惑。那点免费版甚至可以工作吗?任何人都可以解释一下。

1 个答案:

答案 0 :(得分:6)

你是(f . g) x = f (g x),但这并不代表(concatMap . replicate) 4 "abc" = concatMap (replicate 4 "abc")。相反,它意味着(concatMap . replicate) 4 "abc" = concatMap (replicate 4) "abc",这是真的。