Tag: 函数组合

什么(f。)。 g的意思是在Haskell?

我已经看到很多function是根据模式(f .) . g (f .) . g 。 例如: countWhere = (length .) . filter duplicate = (concat .) . replicate concatMap = (concat .) . map 这是什么意思?

在Haskell中的点运算符:需要更多的解释

我试图了解点运算符在这个Haskell代码中做了什么: sumEuler = sum . (map euler) . mkList 整个源代码如下。 我的理解 点运算符将两个函数sum和map euler mkList的结果以及mkList的结果作为input。 但是, sum不是函数,它是函数的参数,对吗? 那么这里发生了什么? 另外, (map euler)在做什么? 码 mkList :: Int -> [Int] mkList n = [1..n-1] euler :: Int -> Int euler n = length (filter (relprime n) (mkList n)) sumEuler :: Int -> Int sumEuler = sum . (map euler) […]

Haskell函数组成(。)和函数应用($)成语:正确使用

我一直在阅读真实世界的Haskell ,而且我已经接近尾声,但风格的问题一直在与我(.)和($)运算符做一个小问题。 当你编写一个其他函数组成的函数时,你可以这样写: f = g . h 但是,当你将这些function应用到最后时,我会这样写: k = a $ b $ c $ value 但是这本书会这样写: k = a . b . c $ value 现在,对我来说,他们看起来在function上是相同的,他们在我眼中完全一样。 然而,我看的越多,我就越是看到人们按照本书的方式编写自己的function:先用(.)编写,然后在最后使用($)来附加一个值来评估这个地段(没有人它与许多美元成分)。 是否有使用书籍方式比使用所有($)符号好得多的原因? 还是有没有一些最好的做法,我没有得到? 或者是多余的,我不应该担心它呢?

Haskell:区别。 (点)和$(美元符号)

点(.)和美元符号($)之间有什么区别? 据我了解,它们都是不需要使用括号的语法糖。