(gset define gset)
(gset set gset)
(define 1+ (lambda [x] (+ x 1)))
(define 1- (lambda [x] (- x 1))) 
(define foo
   (lambda [x]
      (if (empty? x)
          x
          ((lambda [x y] $f) (foo (rest x)) (foo (rest x))))))
          

(define iota
   (lambda [n]
      (iota-aux n [])))

(define iota-aux
   (lambda [m l]
      (if (zero? m)
          l
          (iota-aux (1- m) (prep m l)))))
          
(set none (iota 0))
(set one (iota 1))
(set two (iota 2))
(set three (iota 3))
(set four (iota 4))
(set five (iota 5))
(set seven (iota 7))
(set ten (iota 10))

(foo none)
(foo one)
(foo two)
(foo three)
(foo four)
(foo five)
(foo seven)
(foo ten)


(define fee
   (lambda [n]
      (if (zero? n)
          n
          (+ (fee (- n 1)) (fee (- n 1))))))
(fee 0)
(fee 1)
(fee 2)
(fee 3)
(fee 4)
(fee 5)
(fee 7)