[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: case source code
From: |
Taylan Kammer |
Subject: |
Re: case source code |
Date: |
Mon, 12 Sep 2022 10:47:37 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Thunderbird/102.2.2 |
On 12.09.2022 09:42, Damien Mattei wrote:
>
> Hello,
> i can not find in the scheme community a definition of 'case in term of macro
> as for when, unless,while,do... does anyone have it?
> thanks,
> Damien
The RnRS often contain such definitions. The following is taken from
R7RS-small:
(define-syntax case
(syntax-rules (else =>)
((case (key ...) clauses ...)
(let ((atom-key (key ...)))
(case atom-key clauses ...)))
((case key (else => result))
(result key))
((case key
(else result1 result2 ...))
(begin result1 result2 ...))
((case key
((atoms ...) result1 result2 ...))
(if (memv key ’(atoms ...))
(begin result1 result2 ...)))
((case key
((atoms ...) => result))
(if (memv key ’(atoms ...))
(result key)))
((case key
((atoms ...) => result)
clause clauses ...)
(if (memv key ’(atoms ...))
(result key)
(case key clause clauses ...)))
((case key
((atoms ...) result1 result2 ...)
clause clauses ...)
(if (memv key ’(atoms ...))
(begin result1 result2 ...)
(case key clause clauses ...))))
--
Taylan