iScheme, with little iPhone, something beginning with (
Friday, 27th May, 2011
I bought iScheme a while ago, purely for the novelty value, and thought little more of it. The other day I was browsing through The Little Schemer with my son, and we came across an exercise to write a function that adds two numbers, using only operations for add 1, subtract 1, and a test for zero (p. 60).
After taking some time to express our mind-bogglement, we decided that the problem would become more accessible if we thought of the two numbers to be added as two piles of coins, and the operations as “take a coin”, “put a coin”, and “is this pile empty?”
Later that night I couldn’t resist trying it out on my phone:
I scheme, you scheme, we all scheme on iScheme!
Immodest as it sounds, I have to say I prefer my implementation to the one in the book (reformatted for exposition):
; my version ; (define pls (lambda (x y) ; (cond ((z0 x) y) ; (else (pls (s1 x)(a1 y)) ; )))) ; book version (define pls (lamdba (x y) (cond ((z0 y) x) (else (a1 (pls x (s1 y))) ))))
Why is the book’s version better?