diff --git a/scheme/more-interfaces.scm b/scheme/more-interfaces.scm index 35fd9b1..7560b39 100644 --- a/scheme/more-interfaces.scm +++ b/scheme/more-interfaces.scm @@ -548,6 +548,9 @@ random-source-make-integers random-source-make-reals)) +(define-interface srfi-31-interface + (export (rec :syntax))) + (define-interface srfi-37-interface (export option diff --git a/scheme/more-packages.scm b/scheme/more-packages.scm index e0f8332..40cff15 100644 --- a/scheme/more-packages.scm +++ b/scheme/more-packages.scm @@ -729,7 +729,7 @@ (define available-srfis '(srfi-1 srfi-2 srfi-5 srfi-6 srfi-7 srfi-8 srfi-9 srfi-11 srfi-13 srfi-14 srfi-16 srfi-17 srfi-23 - srfi-25 srfi-26 srfi-27 srfi-28 srfi-30)) + srfi-25 srfi-26 srfi-27 srfi-28 srfi-30 srfi-31)) ; Some SRFI's redefine Scheme variables. (define shadowed @@ -854,6 +854,10 @@ ; SRFI-30 - scheme/rts/read.scm contains the reader for #|...|# comments +(define-structure srfi-31 srfi-31-interface + (open scheme) + (files (srfi srfi-31))) + (define-structure srfi-37 srfi-37-interface (open scheme srfi-9 @@ -946,7 +950,7 @@ srfi-1 srfi-2 srfi-5 srfi-6 srfi-7 srfi-8 srfi-9 srfi-11 srfi-13 srfi-14 srfi-16 srfi-17 srfi-23 srfi-25 srfi-26 srfi-27 srfi-28 - srfi-37 + srfi-31 srfi-37 ) :structure) ((define-signature define-package) :syntax))) diff --git a/scheme/srfi/srfi-31.scm b/scheme/srfi/srfi-31.scm new file mode 100644 index 0000000..859a982 --- /dev/null +++ b/scheme/srfi/srfi-31.scm @@ -0,0 +1,9 @@ +; Taken directly from the SRFI document. + +(define-syntax rec + (syntax-rules () + ((rec (NAME . VARIABLES) . BODY) + (letrec ( (NAME (lambda VARIABLES . BODY)) ) NAME)) + ((rec NAME EXPRESSION) + (letrec ( (NAME EXPRESSION) ) NAME)))) +