(def (chPair a b) (fun (s) (s a b)))

(def (chFst p) (p (fun (a b) a)))

(def (chSnd p) (p (fun (a b) b)))

(def (chNull) false)

(def (chNull? chLst) (bool? chLst))

(def (chPrep hd tl) (chPair hd tl))

(def (chHd chLst) (chFst chLst))

(def (chTl chLst) (chSnd chLst))

;; Call-by-value fixed-point operator.
;; Expresses recursion in HOFL without need for BINDREC!
(def Y (abs gen
         ((abs s (gen (abs x ((s s) x))))
	  (abs s (gen (abs x ((s s) x)))))))

