Questions tagged «function-composition»


7
Haskell函数组成(。)和函数应用程序($)的成语:正确使用
我一直在阅读Real World Haskell,并且快要结束了,但是风格问题一直困扰着我与(.)and ($)运算符。 当您编写一个由其他功能组成的函数时,可以这样写: f = g . h 但是,当您在这些函数的末尾应用某些内容时,我会这样写: k = a $ b $ c $ value 但是这本书会这样写: k = a . b . c $ value 现在,在我看来,它们在功能上是等效的,它们在我眼中的作用完全相同。但是,我看的越多,人们见到的书就越多,就像书中写的那样:(.)首先编写,然后最后才使用($)附加值来评估手数(没人会用很多美元组成) 。 是否有理由比使用所有($)符号更好地使用书籍方式?还是我没有得到一些最佳实践?还是它是多余的,我根本不必担心它?

6
Haskell中的点运算符:需要更多说明
我试图了解在此Haskell代码中点运算符在做什么: sumEuler = sum . (map euler) . mkList 整个源代码如下。 我的理解 点运算符将两个函数sum以及的结果map euler和的结果mkList作为输入。 但是,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 …

2
结合Haskell代码片段以获得更大的画面
这是我在某处遇到的代码,但想知道它是如何工作的: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) 输出:findIndices(== 0)[1,2,0,3,0] == [2,4],其中pred是(== 0)&xs是[1,2,0,3,0] 我将展示一些理解: (zip [0..] xs) 上一行所做的是将索引放入列表中的所有内容。对于上面给出的输入,它看起来像这样:[(0,1),(1,2,2,(2,0),(3,3),(4,0)] (pred . snd) 我发现这意味着像pred(snd(x))。我的问题是,列表是否由邮编组成?我倾向于是,但是我的猜测很脆弱。 接下来,是我对fst和snd的理解。我知道 fst(1,2) = 1 和 snd(1,2) = 2 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.