#| 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 ...)))))))