69 lines
2.4 KiB
Plaintext
69 lines
2.4 KiB
Plaintext
![]() |
;;;; srfi-O.stk -- SRFI-0 aka cond-expand
|
|||
|
;;;;
|
|||
|
;;;; Copyright <20> 1999 Erick Gallesio - I3S-CNRS/ESSI <eg@unice.fr>
|
|||
|
;;;;
|
|||
|
;;;; Permission to use, copy, modify, distribute,and license this
|
|||
|
;;;; software and its documentation for any purpose is hereby granted,
|
|||
|
;;;; provided that existing copyright notices are retained in all
|
|||
|
;;;; copies and that this notice is included verbatim in any
|
|||
|
;;;; distributions. No written agreement, license, or royalty fee is
|
|||
|
;;;; required for any of the authorized uses.
|
|||
|
;;;; This software is provided ``AS IS'' without express or implied
|
|||
|
;;;; warranty.
|
|||
|
;;;;
|
|||
|
;;;; This is an implementation of SRFI-0 (Marc Feeley). The implementation is
|
|||
|
;;;; a simple adaptation of the one given in in the SRFI document.
|
|||
|
;;;;
|
|||
|
;;;; Author: Erick Gallesio [eg@unice.fr]
|
|||
|
;;;; Creation date: 30-Aug-1999 16:26 (eg)
|
|||
|
;;;; Last file update: 3-Sep-1999 19:54 (eg)
|
|||
|
|
|||
|
|
|||
|
(require "defsyntax")
|
|||
|
|
|||
|
(define-syntax cond-expand
|
|||
|
(syntax-rules ( and or not else srfi-0 srfi-2 srfi-6 srfi-8 )
|
|||
|
((cond-expand) (error "Unfulfilled cond-expand"))
|
|||
|
((cond-expand (else body ...))
|
|||
|
(begin body ...))
|
|||
|
((cond-expand ((and) body ...) more-clauses ...)
|
|||
|
(begin body ...))
|
|||
|
((cond-expand ((and req1 req2 ...) body ...) more-clauses ...)
|
|||
|
(cond-expand
|
|||
|
(req1 (cond-expand ((and req2 ...) body ...) more-clauses ...))
|
|||
|
more-clauses ...))
|
|||
|
((cond-expand ((or) body ...) more-clauses ...)
|
|||
|
(cond-expand more-clauses ...))
|
|||
|
((cond-expand ((or req1 req2 ...) body ...) more-clauses ...)
|
|||
|
(cond-expand (req1
|
|||
|
(begin body ...))
|
|||
|
(else (cond-expand ((or req2 ...) body ...)
|
|||
|
more-clauses ...))))
|
|||
|
((cond-expand ((not req) body ...) more-clauses ...)
|
|||
|
(cond-expand (req (cond-expand more-clauses ...))
|
|||
|
(else body ...)))
|
|||
|
|
|||
|
;; SRFI 0 -- COND-EXPAND
|
|||
|
((cond-expand (srfi-0 body ...) more-clauses ...)
|
|||
|
(begin body ...))
|
|||
|
|
|||
|
;; SRFI 1 -- List primitives
|
|||
|
; not final
|
|||
|
|
|||
|
;; SRFI 2 -- LAND*
|
|||
|
((cond-expand (srfi-2 body ...) more-clauses ...)
|
|||
|
(begin (require "srfi-2") body ...))
|
|||
|
|
|||
|
;; SRFI 6 -- String ports
|
|||
|
((cond-expand (srfi-6 body ...) more-clauses ...)
|
|||
|
(begin body ...))
|
|||
|
|
|||
|
;; SRFI 8 -- RECEIVE
|
|||
|
((cond-expand (srfi-8 body ...) more-clauses ...)
|
|||
|
(begin body ...))
|
|||
|
|
|||
|
((cond-expand (feature-id body ...) more-clauses ...)
|
|||
|
(cond-expand more-clauses ...))))
|
|||
|
|
|||
|
(provide "srfi-0")
|