diff options
| author | 2025-08-02 13:42:12 -0400 | |
|---|---|---|
| committer | 2025-08-02 13:42:12 -0400 | |
| commit | 6c68eed724a8321f7f0830b4a0d82ce3112b3453 (patch) | |
| tree | 1b2a9328999c56ef3960b4329e640c098b4950d5 /srfi-229.sld | |
| parent | bump version to stable 1.0.0 (diff) | |
Diffstat (limited to 'srfi-229.sld')
| -rw-r--r-- | srfi-229.sld | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/srfi-229.sld b/srfi-229.sld new file mode 100644 index 0000000..54bbc91 --- /dev/null +++ b/srfi-229.sld @@ -0,0 +1,38 @@ +#| Copyright (C) 2025 Peter McGoron + | + | Permission is hereby granted, free of charge, to any person obtaining a + | copy of this software and associated documentation files (the + | "Software"), to deal in the Software without restriction, including + | without limitation the rights to use, copy, modify, merge, publish, + | distribute, sublicense, and/or sell copies of the Software, and to + | permit persons to whom the Software is furnished to do so, subject to + | the following conditions: + | + | The above copyright notice and this permission notice (including the + | next paragraph) shall be included in all copies or substantial portions + | of the Software. + | + | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + |# + +(define-library (srfi 229) + (import (scheme base) (srfi 259) (scheme case-lambda)) + (export lambda/tag case-lambda/tag procedure/tag? procedure-tag) + (begin + (define-procedure-tag %procedure-tag %procedure/tag? procedure-tag) + (define (procedure/tag? proc) + (and (procedure? proc) (%procedure/tag? proc))) + (define-syntax case-lambda/tag + (syntax-rules () + ((_ expression clauses ...) + (%procedure-tag expression (case-lambda clauses ...))))) + (define-syntax lambda/tag + (syntax-rules () + ((_ expression formals body ...) + (%procedure-tag expression (lambda formals body ...))))))) |
