(let ((Y (lambda (f) (let ((g (lambda (x) (apply f (list (lambda (z1 z2) (apply (apply x (list x)) (list z1 z2)))))))) (g g)))) (newappend (lambda (ap) (lambda (x y) (if (null? x) y (cons (first x) (apply ap (list (rest x) y))))))) (l (cons 1 (cons 2 (cons 3 null))))) (apply (Y newappend) (list l l)))