Комбинаторы — это просто!: различия между версиями

Содержимое удалено Содержимое добавлено
Нет описания правки
Исправления к модулю на Haskell
Строка 320:
 
<code>data Combinator = Var String
| App LambdaCombinator LambdaCombinator
| Lam String LambdaCombinator
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</code>
| x == y = false</code>
 
Всё в полном соответствии с математическим определением.
Строка 385 ⟶ 386 :
transform (App x y) = App (transform x)
(transform y)
transform (Lam x (Var y))
| x == y = i transform (Lam x e)
| (nototherwise . free x) e = App k (transform= e) transformk (Lam x l@(LamVar y e))
transform (Lam |x free(Lam xy e )@l) = transform (Lam x (transform l))
transform (Lam x (App e1 e2)) = App (App s (transform (Lam x e1)))
(transform (Lam x e2))

</code>
 
Видно, что определение этой функции полностью совпадает с описанием