mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-18 21:29:19 +02:00
25 lines
735 B
Scheme
25 lines
735 B
Scheme
|
|
(define-library (srfi 2)
|
|
(export and-let*)
|
|
(import (chibi))
|
|
(begin
|
|
(define-syntax and-let*
|
|
(syntax-rules ()
|
|
((and-let* ())
|
|
#t)
|
|
((and-let* () . body)
|
|
(let () . body))
|
|
((and-let* ((var expr)))
|
|
expr)
|
|
((and-let* ((expr)))
|
|
expr)
|
|
((and-let* (expr)) ; Extension: in SRFI-2 this can only be a var ref
|
|
expr)
|
|
((and-let* ((var expr) . rest) . body)
|
|
(let ((var expr))
|
|
(and var (and-let* rest . body))))
|
|
((and-let* ((expr) . rest) . body)
|
|
(and expr (and-let* rest . body)))
|
|
((and-let* (expr . rest) . body) ; Same extension as above
|
|
(let ((tmp expr))
|
|
(and tmp (and-let* rest . body))))))))
|