我正在学习Haskell,但我没有找到答案。
为什么使用严重重音将mod
函数传递给映射,如示例中所示?我看到了其他不需要的功能。
map (`mod` 3) [1..6] -- result is [1,2,0,1,2,0]
如果我没有严肃的口音,结果就完全不同了。
map (mod 3) [1..6] -- result is [0,1,0,3,3,3]
答案 0 :(得分:11)
重音“使功能表现得像操作员”。例如:
mod a b == a `mod` b
所以
(mod 3) == mod 3 ?
和
(`mod` 3) == mod ? 3
答案 1 :(得分:1)
如果你想明确确定你在想什么,(我总是这样做,因为我还处于学习阶段),你总是可以使用anonymous function (我认为有时称为 lambda表达式,但不确定)
> map (\x -> x `mod` 3) [1..10]
[1,2,0,1,2,0,1,2,0,1]
> map (\x -> 3 `mod` x) [1..10]
[0,1,0,3,3,3,3,3,3,3]
> map (\x -> mod x 3) [1..10]
[1,2,0,1,2,0,1,2,0,1]
> map (\x -> mod 3 x) [1..10]
[0,1,0,3,3,3,3,3,3,3]