Call-by-name evaluation let and := map x,y to if x then y else false; or := map x,y to if x then true else y; member := map x,l to and(cons?(l), or(x = first(l), member(x, cdr(l)))); in member(1, cons(1, null)) => let ... in (map x,l to ...)(1, cons(1, null)) => let ... in and(cons?(cons(1, null)), or(1 = first(cons(1, null)), member(1, cdr(cons(1, null))))) => let ... in (map x,y to ...)(cons?(cons(1, null)), or(1 = first(cons(1, null)), member(1, cdr(cons(1, null))))) => let ... in if cons?(cons(1, null)) then or(1 = first(cons(1, null)), member(1, cdr(cons(1, null)))) else false => let ... in if true then or(1 = first(cons(1, null)), member(1, cdr(cons(1, null)))) else false => let ... in or(1 = first(cons(1, null)), member(1, cdr(cons(1, null)))) => let ... in (map x,y to ...)(1 = first(cons(1, null)), member(1, cdr(cons(1, null)))) => let ... in if 1 = first(cons(1, null)) then true else member(1, cdr(cons(1, null))) => let ... in if 1 = 1 then true else member(1, cdr(cons(1, null))) => let ... in if true then true else member(1, cdr(cons(1, null))) => let ... in true => true