;;; ;;; husk-scheme ;;; http://justinethier.github.com/husk-scheme ;;; ;;; Implementation of SRFI-2: and-let* ;;; (define-syntax and-let* (syntax-rules () ; Special case ((and-let* ()) #t) ; No CLAWS, just body ((and-let* () body ...) (begin body ...)) ; Special cases of below - CLAWS with no body ((and-let* ((var expr)) ) (let ((var expr)) (and var))) ((and-let* ((expr))) (let ((tmp expr)) (and tmp ))) ((and-let* (expr)) (let ((tmp expr)) (and tmp ))) ; General case - CLAWS and body ((and-let* ((var expr) . rest) . body) (let ((var expr)) (and var (and-let* rest . body)))) ((and-let* ((expr) . rest) . body) (let ((tmp expr)) (and tmp (and-let* rest . body)))) ((and-let* (expr . rest) . body) (let ((tmp expr)) (and tmp (and-let* rest . body))))))