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
でしょうか? ナンセンス。ここではどのようなトリックが機能しますか?