(list (lambda (f) 
(apply (lambda (sg alpha zer zer? one + - *) (list
  (lambda () (cons (sg) (sg)))
  (lambda (x) (cons (alpha (car x)) (- zer (alpha (cdr x)))))
  (cons zer zer)
  (lambda (a) (and (zer? (car a)) (zer? (cdr a))))
  (cons one zer)
  (lambda (a b) (cons (+ (car a)(car b))(+ (cdr a)(cdr b))))
  (lambda (a b) (cons (- (car a)(car b))(- (cdr a)(cdr b))))
  (lambda (a b) (cons (- (* (car a)(car b))(* (cdr a)(alpha (cdr b))))
                      (+ (* (car a)(cdr b))(* (cdr a)(alpha (car b))))))
  )) f))

(list (lambda (x) x) 0 zero? 1 + - *))
