다시 짜봤습니다:
Nat
{
succ(n: Nat) = "s" * ''n'.
zero() = "z".
}
List
{
nil() = ".".
cons(head: Nat, tail: List) = "." * 'head' * 'tail'.
}
Plus(Nat, Nat, Nat).
/ Plus(n, zero(), n).
Plus(i, j, k) / Plus(i, succ(j), succ(k)).
F(List, Nat).
/ F(".sz.", "z").
/ F(".sz.sz.", "sz").
F(cons(x, cons(y, z)), n), Plus(x, y, a) / F(cons(a, cons(x, cons(y, z))), succ(n)).
Main(Nat, Nat).
F(cons(x, _), n) / Main(n, x).
<< Main("ssz", x).
>> x = succ(succ(zero())).
리슾이 아른거린다
해당 댓글은 삭제되었습니다.
생각해보니까 제 인터프리터가 못 풀 것 같아요. - 훈다리 훈다리