guile-user
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]