与点免费样式代码混淆

Dul*_*gon 2 haskell pointfree

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

rep :: Int -> [a] -> [a]
rep = concatMap . replicate
Run Code Online (Sandbox Code Playgroud)

按照定义(f . g) x = f(g(x))但是

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

ick*_*fay 6

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