; Fix! http://cap-lore.com/Languages/lambda/Combinators.html ; The function ass below removes parentheses is associative rule implies them. (define (ass x) (if (pair? x) (if (pair? (car x)) (append (ass (car x)) (map ass (cdr x))) (cons (car x) (map ass (cdr x)))) x)) Test cases: (ass '(a (w e) r)) => (a (w e) r) (ass '(s ((t b) v) e)) => (s (t b v) e) (ass '((a v) t)) => (a v t) (ass '((a b) (c d))) => (a b (c d)) ---------- ((λSKI. (S (S (S (K S) S (K K) I) S (S (K S) S (S (K S) S (K K) K S) S (S (K S) S (S (K S) S (K K) K S) S (S (K S) S (K K) K K) K I) S (S (K S) S (K K) K K) K I) S (K K) K I) S (S (K S) S (K K) I) S (S (K S) S (S (K S) S (K K) K S) S (S (K S) S (S (K S) S (K K) K S) S (S (K S) S (K K) K K) K I) S (S (K S) S (K K) K K) K I) S (K K) K I) ; App goes here. ) (λfgx.fx(gx)) ; S (λxy.x) ; K (λx.x) ; I ) (pr ((Y rd) 7)) rd = (λrn.(zn(λd.H)(λD.(S(r(dn))))i)) pr = (λn.ni0) ((λn.ni0) ((((λSKI. (S (S (S (K S) (S (K K) I)) (S (S (K S) (S (S (K S) (S (K K) (K S))) (S (S (K S) (S (S (K S) (S (K K) (K S))) (S (S (K S) (S (K K) (K K))) (K I)))) (S (S (K S) (S (K K) (K K))) (K I))))) (S (K K) (K I)))) (S (S (K S) (S (K K) I)) (S (S (K S) (S (S (K S) (S (K K) (K S))) (S (S (K S) (S (S (K S) (S (K K) (K S))) (S (S (K S) (S (K K) (K K))) (K I)))) (S (S (K S) (S (K K) (K K))) (K I))))) (S (K K) (K I))))) ; App goes here. ) (λfgx.fx(gx)) ; S (λxy.x) ; K (λx.x) ; I ) (λrn.(zn(λd.H)(λD.((λnfx.f(nfx))(r(dn))))i))) 7)) ; => 7