Теперь я понимаю сигнатуру типа s (sk)
:
s (s k) :: ((t1 -> t2) -> t1) -> (t1 -> t2) -> t1
И я можно создать примеры, которые работают без ошибок в инструменте Haskell WinGHCi:
Пример:
s (s k) (\g -> 2) (\x -> 3)
возвращает 2
.
Пример:
s (s k) (\g -> g 3) successor
возвращает 4
.
где преемник
определяется так:
successor = (\x -> x + 1)
Тем не менее, у меня все еще нет интуитивного пониманиятого, что делает s (s k)
.
Комбинатор s (s k)
принимает любые две функции f
и g
. Что делает s (s k)
с f
и g
? Не могли бы вы дать мне общую картинуо том, что s (sk)
делает, пожалуйста?