Skip to content

Instantly share code, notes, and snippets.

@hanachin
Created July 3, 2011 16:41
Show Gist options
  • Save hanachin/1062367 to your computer and use it in GitHub Desktop.
Save hanachin/1062367 to your computer and use it in GitHub Desktop.
The Little Schemer evens-only*&co
(define (atom? x)
(and (not (pair? x))
(not (null? x))))
(define evens-only*&co
(lambda (l col)
(cond ((null? l) (col '() 1 0))
((atom? (car l))
(cond ((even? (car l))
(evens-only*&co
(cdr l)
(lambda (newl p s)
(col (cons (car l) newl)
(* (car l) p)
s))))
(else (evens-only*&co
(cdr l)
(lambda (newl p s)
(col newl p (+ s (car l))))))))
(else (evens-only*&co
(car l)
(lambda (al ap as)
(evens-only*&co (cdr l)
(lambda (dl dp ds)
(col (cons al dl)
(* ap dp)
(+ as ds))))))))))
(define the-last-friend
(lambda (newl product sum)
(cons sum
(cons product newl))))
(evens-only*&co '((9 1 2 8) 3 10 ((9 9) 7 6) 2) the-last-friend)
(evens-only*&co
'(9 1 2 8)
(lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1))))))
(evens-only*&co
'(1 2 8)
(lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9))))
(evens-only*&co
'(2 8)
(lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1))))
(evens-only*&co
'(8)
(lambda (newl3 p3 s3)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 newl3) (* 2 p3) s3)))
(evens-only*&co
'()
(lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 newl3) (* 2 p3) s3))
(cons 8 newl4) (* 8 p4) s4)))
((lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 newl3) (* 2 p3) s3))
(cons 8 newl4) (* 8 p4) s4))
'() 1 0)
((lambda (newl3 p3 s3)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 newl3) (* 2 p3) s3))
(cons 8 '()) (* 8 1) 0)
((lambda (newl3 p3 s3)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 newl3) (* 2 p3) s3))
'(8) 8 0)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
(cons 2 '(8)) (* 2 8) 0)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
newl2 p2 (+ s2 1)))
'(2 8) 16 0)
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
'(2 8) 16 (+ 0 1))
((lambda (newl1 p1 s1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
newl1 p1 (+ s1 9)))
'(2 8) 16 1)
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
'(2 8) 16 (+ 1 9))
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
'(2 8) 16 (+ 1 9))
((lambda (al1 ap1 as1)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons al1 dl1)
(* ap1 dp1)
(+ as1 ds1)))))
'(2 8) 16 10)
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1))))
(evens-only*&co
'(3 10 ((9 9) 7 6) 2)
(lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1))))
(evens-only*&co
'(10 ((9 9) 7 6) 2)
(lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3))))
(evens-only*&co
'(((9 9) 7 6) 2)
(lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2)))
(evens-only*&co
'((9 9) 7 6)
(lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2))))))
(evens-only*&co
'(9 9)
(lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3))))))
(evens-only*&co
'(9)
(lambda (newl3 p3 s3)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
newl3 p3 (+ s3 9))))
(evens-only*&co
'()
(lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
newl3 p3 (+ s3 9)))
newl4 p4 (+ s4 9))))
((lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
newl3 p3 (+ s3 9)))
newl4 p4 (+ s4 9)))
'() 1 0)
((lambda (newl3 p3 s3)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
newl3 p3 (+ s3 9)))
'() 1 (+ 0 9))
((lambda (newl3 p3 s3)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
newl3 p3 (+ s3 9)))
'() 1 9)
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
'() 1 (+ 9 9))
((lambda (al3 ap3 as3)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons al3 dl3) (* ap3 dp3) (+ as3 ds3)))))
'() 1 18)
(evens-only*&co
'(7 6)
(lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3))))
(evens-only*&co
'(6)
(lambda (newl3 p3 s3)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
newl3 p3 (+ s3 7))))
(evens-only*&co
'()
(lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
newl3 p3 (+ s3 7)))
(cons 6 newl4) (* 6 p4) s4)))
((lambda (newl4 p4 s4)
((lambda (newl3 p3 s3)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
newl3 p3 (+ s3 7)))
(cons 6 newl4) (* 6 p4) s4))
'() 1 0)
((lambda (newl3 p3 s3)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
newl3 p3 (+ s3 7)))
(cons 6 '()) (* 6 1) 0)
((lambda (newl3 p3 s3)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
newl3 p3 (+ s3 7)))
'(6) 6 0)
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
'(6) 6 (+ 0 7))
((lambda (dl3 dp3 ds3)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() dl3) (* 1 dp3) (+ 18 ds3)))
'(6) 6 7)
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
(cons '() '(6)) (* 1 6) (+ 18 7))
((lambda (al2 ap2 as2)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons al2 dl2) (* ap2 dp2) (+ as2 ds2)))))
'(() 6) 6 25)
(evens-only*&co
'(2)
(lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) dl2) (* 6 dp2) (+ 25 ds2))))
(evens-only*&co
'()
(lambda (newl3 p3 s3)
((lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) dl2) (* 6 dp2) (+ 25 ds2)))
(cons 2 newl3) (* 2 p3) s3)))
((lambda (newl3 p3 s3)
((lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) dl2) (* 6 dp2) (+ 25 ds2)))
(cons 2 newl3) (* 2 p3) s3))
'() 1 0)
((lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) dl2) (* 6 dp2) (+ 25 ds2)))
(cons 2 '()) (* 2 1) 0)
((lambda (dl2 dp2 ds2)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) dl2) (* 6 dp2) (+ 25 ds2)))
'(2) 2 0)
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
(cons '(() 6) '(2)) (* 6 2) (+ 25 0))
((lambda (newl2 p2 s2)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 newl2) (* 10 p2) s2))
'((() 6) 2) 12 25)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
(cons 10 '((() 6) 2)) (* 10 12) 25)
((lambda (newl1 p1 s1)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
newl1 p1 (+ s1 3)))
'(10 (() 6) 2) 120 25)
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
'(10 (() 6) 2) 120 (+ 25 3))
((lambda (dl1 dp1 ds1)
(the-last-friend (cons '(2 8) dl1)
(* 16 dp1)
(+ 10 ds1)))
'(10 (() 6) 2) 120 28)
(the-last-friend (cons '(2 8) '(10 (() 6) 2))
(* 16 120)
(+ 10 28))
(the-last-friend '((2 8) 10 (() 6) 2)
1920
38)
((lambda (newl product sum)
(cons sum
(cons product newl)))
'((2 8) 10 (() 6) 2)
1920
38)
(cons 38 (cons 1920 '((2 8) 10 (() 6) 2)))
(cons 38 '(1920 (2 8) 10 (() 6) 2))
'(38 1920 (2 8) 10 (() 6) 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment