foreign-c-libraries/.tmp/system/ikarus/.akku/lib/srfi/srfi-61.guile.sls

28 lines
970 B
Scheme

#!r6rs
;; Copyright 2009 Derick Eddington. My MIT-style license is in the file named
;; LICENSE from the original collection this file is distributed with.
(library (srfi srfi-61)
(export
(rename (general-cond cond)))
(import
(rnrs))
(define-syntax general-cond
(lambda (stx)
(syntax-case stx ()
((_ clauses ...)
(with-syntax (((ours ...)
(map (lambda (c)
(syntax-case c (=>)
((generator guard => receiver)
#'((let-values ((vals generator))
(and (apply guard vals)
vals))
=> (lambda (vals)
(apply receiver vals))))
(_ c)))
#'(clauses ...))))
#'(cond ours ...))))))
)