Что делает этот комбинатор: s (sk)

Теперь я понимаю сигнатуру типа 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)делает, пожалуйста?

6
задан Gilles 'SO- stop being evil' 25 March 2012 в 16:16
поделиться