peano.matzo 647 B

123456789101112131415161718192021222324252627282930313233343536
  1. fn isZero { [Z] => True; [<S,_>] => False };
  2. fn add {
  3. [Z] => fn { [y] => y };
  4. [<S,x>] => fn { [y] => add[x][<S,y>] };
  5. };
  6. incr := add[<S,Z>];
  7. two := <S,<S,Z>>;
  8. four := <S,<S,<S,<S,Z>>>>;
  9. fn if {
  10. [True] => fn { [x] => fn { [_] => x } };
  11. [False] => fn { [_] => fn { [y] => y } };
  12. };
  13. fn minusOne { [Z] => Z; [<S,x>] => x };
  14. puts "S is " S;
  15. puts "Z is " Z;
  16. puts "True is " True;
  17. puts "False is " False;
  18. puts "Is 0 zero?";
  19. puts isZero[Z];
  20. puts "Is 4 zero?";
  21. puts isZero[four];
  22. puts "2 + 4 = ";
  23. puts add[four][two];
  24. puts "Is zero zero?";
  25. puts if[isZero[Z]]["yes"]["no"];
  26. puts "Is 0+1 zero?";
  27. puts if[isZero[incr[Z]]]["yes"]["no"];