6

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]
4

2 に答える 2

11

アクセントは「関数を演算子のように振る舞わせます」。例えば:

mod a b == a `mod` b

それで

(mod 3) == mod 3 ?

(`mod` 3) == mod ? 3
于 2013-01-28T18:09:05.310 に答える
1

何を考えているのかを明示的に確認したい場合(私もまだ学習段階にあるので、私はいつもそうしています)、いつでも匿名関数を使用できます(ラムダ式と呼ばれることもありますが、よくわかりません)

> 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]
于 2013-01-30T14:15:24.273 に答える