私は今、次の型署名を理解していますs (s k)
:
s (s k) :: ((t1 -> t2) -> t1) -> (t1 -> t2) -> t1
そして、HaskellWinGHCiツールでエラーなしで機能する例を作成できます。
例:
s (s k) (\g -> 2) (\x -> 3)
を返します2
。
例:
s (s k) (\g -> g 3) successor
を返します4
。
ここsuccessor
で、次のように定義されます。
successor = (\x -> x + 1)
それにもかかわらず、私はまだ何をするのかについて直感的な感覚s (s k)
を持っていません。
コンビネータs (s k)
は、任意の2つの関数f
とを取りますg
。とは何s (s k)
をf
しg
ますか?何をお願いするかについての全体像を教えていただけますs (s k)
か?