haskellで次の式は何を意味しますか?Haskellでの関数適用演算子の使用
($ 3)
GHCiのは、次のタイプの任意のオペレータ@
ため
($ 3) :: Num a => (a -> b) -> b.
haskellで次の式は何を意味しますか?Haskellでの関数適用演算子の使用
($ 3)
GHCiのは、次のタイプの任意のオペレータ@
ため
($ 3) :: Num a => (a -> b) -> b.
(@ x)
が\a -> a @ x
と等価であることを示しています。したがって、($ 3)
は\f -> f $ 3
と同等です。すなわち、それを渡す関数を適用する関数は3
になります。この構文は「セクション」と呼ばれます。
> let f = ($ 3)
> f show
"3"
> f square
9
($ 3)
セクションで、\f -> f 3
に相当し、関数の引数を取り、我々が整数であることを3
を検討した場合、我々はf
の種類ことを持っているでしょう。3.
にそれを適用しますInt -> b
(任意の場合はb
)なので、($ 3)
のタイプは(Int -> b) -> b
となります。
Haskellでは物事は3
は任意の数値タイプとすることができるので、私たちは本当にf :: Int -> b
を必要としないので、f :: a -> b
a
が数値型であるところならば、それは十分です、少し複雑です。
したがって、我々は($ 3) :: Num a => (a -> b) -> b
を得る。それを見て
もう一つの方法は、
($) :: (a -> b) -> a -> b
3 :: Num a => a
であり、あなたが($)
で「3を挿入」するとき、それはあなたがもはやAを供給する必要があるため、それに
($ 3) :: Num a => (a -> b) -> b.
となり、 3には任意の数値型を指定できるので、必要な関数はnumに制限されています。
これは少なくとも、Haskellの関数を、代数の代入のように見ています。