私は今、次の型署名を理解しています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)か?