; if these defines are not nested, it works.
; (define take (lambda (n seq) (if (<= n 0) (quote ()) (cons (car seq) (take (- n 1) (cdr seq))))))
; (define drop (lambda (n seq) (if (<= n 0) seq (drop (- n 1) (cdr seq)))))
; (define mid (lambda (seq) (/ (length seq) 2)))
(define combine (lambda (f)
(lambda (x y)
(if (null? x) (quote ())
(f (list (car x) (car y))
((combine f) (cdr x) (cdr y)))))))
; but not inside:
(define riff-shuffle (lambda (deck) (begin
(define take (lambda (n seq) (if (<= n 0) (quote ()) (cons (car seq) (take (- n 1) (cdr seq))))))
(define drop (lambda (n seq) (if (<= n 0) seq (drop (- n 1) (cdr seq)))))
(define mid (lambda (seq) (/ (length seq) 2)))
((combine append) (take (mid deck) deck) (drop (mid deck) deck)))))
(riff-shuffle (list 1 2 3 4 5 6 7 8))
6322+1929>(load "rs.lisp")
(load "rs.lisp")
combine
riff-shuffle
unbound take ERR 3 unbound symbol
6024+1921>(riff-shuffle (list 1 2 3 4 5 6 7 8))
unbound take ERR 3 unbound symbol
> (load "rs.lisp")
> (riff-shuffle (list 1 2 3 4 5 6 7 8))
(1 5 2 6 3 7 4 8)