I have just started learning some Scheme this weekend. I recently solved a problem that goes something like:Count the number of ways possible to give out a certain amount of change using1 5 10 25 and 50 cent pieces.--SICP 1.16So my code to this question looks like this:(define (make-change amount)  (define coin-total 5)  ;;#Function that actually does the calculating  (define (calculate amount coins)    ;;#Lookup values on the table vector, if none is found find it and add it.    (define (lookup)      ;;#Location on the table vector      (define position (- (+ coins (* coin-total (- amount 1))) 1))      ;;#Get the value in the table vector      (define (search-for amount coins)        (vector-ref table position))      ;;#Not quite so functional, but we need to add it somehow      (define (update val)        (begin (vector-set! table position val)               val))       (let ((result (search-for amount coins)))        (if (= result 0)          (let* ((left-branch (calculate amount (- coins 1)))                 (right-branch (calculate (- amount (coin-value coins)) coins)))           (update (+ left-branch right-branch)))          result)))    (cond ((= amount 0) 1 )          ((or (< amount 0) (= coins 0)) 0)          (else (lookup))))  ;;#Table stuff  (define table (make-vector (* amount coin-total) 0))  (define (init-table position)    (if (< position 0)      0      (begin (vector-set! table position 1)             (init-table (- position 1)))))    ;;#The entry point, sets up the table and starts the calculation      (begin (init-table 4) (calculate amount coin-total)))    ;;#Mapping from coin number to value, order doesn't matter    (define (coin-value n)      (cond ((= n 1) 1)          ((= n 2) 5)          ((= n 3) 10)          ((= n 4) 25)          ((= n 5) 50)))The logic in this code is sound, it works but I'm worried that I'm not writing it very idiomatically. What suggestions or alterations would you make for this code?Note: I stuck this # in the comments here so that the code highlighting would stop treating it like code and messing up the syntax highlighting 
Counting Ways to Make Change -- Is this good functional/Lisp style?
lisp;scheme;functional programming