Write the times
and compare
functions from
Exercise 11 in FICS using #lang plait
. The given definitions for Z
and S
can be replaced by
#lang plait
(define-type Nat
[Z]
[S (pred : Nat)])
(define (plus nat1 nat2)
(type-case Nat nat1
[(Z) nat2]
[(S pred) (S (plus pred nat2))]))
Your code should pass the following tests
(test (plus (Z) (S (Z))) (S (Z)))
(test (plus (S (Z)) (Z)) (S (Z)))
(test (compare (Z) (Z)) 'equal)
(test (compare (Z) (S (Z))) 'less)
(test (compare (S (Z)) (Z)) 'greater)
(test (compare (S (S (Z))) (S (Z))) 'greater)
(test (times (Z) (Z)) (Z))
(test (times (Z) (S (Z))) (Z))
(test (times (S (Z)) (Z)) (Z))
(test (times (S (S (Z))) (S (Z))) (S (S (Z))))