Комбинаторы — это просто!: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
Исправления к модулю на Haskell |
||
Строка 320:
<code>data Combinator = Var String
| App
| Lam String
deriving Eq</code>
Строка 370:
free x (Var y) = x == y
free x (App e1 e2) = free x e1 || free x e2
free x (Lam y e) | x != y = free x e
| x == y = false</code>
Всё в полном соответствии с математическим определением.
Строка 385 ⟶ 386 :
transform (App x y) = App (transform x)
(transform y)
transform (Lam x
| x == y = i
|
transform (Lam
transform (Lam x (App e1 e2)) = App (App s (transform (Lam x e1)))
(transform (Lam x e2))
</code> Видно, что определение этой функции полностью совпадает с описанием
|