lomeo: (лямбда)
2006-06-09 04:31 pm

как в комбинаторы функцию перевести?



  1. Имеем функцию f x y z = ....

  2. С помощью лямбдабота переводим в pointfree стиль.

  3. Меняем:

    • (.) на B

    • ($) на I

    • flip на C

    • ap на S

    • join на W

    • const на K





Ничего не забыл?

UPD: О! Задачка!
На что надо поменять liftM, liftM2 и т.д.?
lomeo: (лямбда)
2006-05-30 02:49 pm

опять про комбинаторы

Вот после долгих попыток перевести K в IBCS базис, понял, что этот базис не является полным, т.е, через него нельзя выразить любые лямбда-термы без свободных переменных.
lomeo: (лямбда)
2006-05-30 02:42 pm

комбинаторы.

На курсах INTUIT написано:

минимальный базис состоит всего из двух «инструкций»-комбинаторов, например, {K,S}

Выше говорится, что под выражением "минимальный" понимают мощность множества комбинаторов базиса. С большим удовольствием прочёл у Фоккера, что это далеко не так. Есть и однокомбинаторные базисы.

Фоккер приводит пример базиса, состоящего из одного комбинатора X, с помощью которого мы можем получить S и K cледующим образом:

K = XX
S = XK = X(XX)

X = λf.fS(λxyz.x)

Удивительная всё-таки наука. Подкидывает такие приятные мелочи.

(UPD) Предлагаю назвать этот комбинатор "Великим".