(* prelude2.fm *) let B f g x = f(g x) ;; (* function composition *) let C f x y = f y x ;; (* arg-order exchanger *) let K x y = x ;; (* "K" *) let S f g x = f x (g x) ;; (* "S" *) let W f x = f x x ;; (* arg-copier *) let K1 = \x ;; (* arg-killer *) let Fst f = o y ;; (* first-applier *) let Snd f <2:x|y> = <2:f x> o y ;; (* second-applier *) let Rst f = o f y ;; (* rest-applier *) let map_fst *f = map f:(Fst f) ;; let map_snd *f = map f:(Snd f) ;; let distr_pair f = ;;