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]
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]
アクセントは「関数を演算子のように振る舞わせます」。例えば:
mod a b == a `mod` b
それで
(mod 3) == mod 3 ?
と
(`mod` 3) == mod ? 3
何を考えているのかを明示的に確認したい場合(私もまだ学習段階にあるので、私はいつもそうしています)、いつでも匿名関数を使用できます(ラムダ式と呼ばれることもありますが、よくわかりません)
> 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]