OK、長い一日だったので、私の脳は Haskell レベルで機能していないかもしれませんが、「Learn You a Haskell」の 1 つの例を理解できません。
このセクションは$ を使用した Function Application と$呼ばれ、定義方法の例があります。
($) :: (a -> b) -> a -> b
f $ x = f x
これまでのところ、すべてが明らかです。最後の例を除いて、このセクションのすべての例を理解しています。
ghci> map ($ 3) [(4+), (10*), (^2), sqrt]
[7.0,30.0,9.0,1.7320508075688772]
ここでは($ 3)、関数のリスト全体にマップし、それらの関数を に適用した結果を取得し3ます。しかし、これはどのように可能ですか?
最初のコード スニペットから、最初の引数が関数であることは明らかです。次のように書くこともできます。
*Main> ($) sqrt 4
2.0
($ 3)これは function の部分的な適用ですが、 function の位置$に進みます3! それで3、関数か何かになるはずですか?
別の謎があります: 一体何(4+)ですか? (+4)関数 の部分適用であることはわかってい+ますが、関数 の(4+)部分適用でよいの4でしょうか? ナンセンス。ここではどのようなトリックが機能しますか?