Re: CL vs scheme macros, namespaces.

Liste des GroupesRevenir à cl lisp 
Sujet : Re: CL vs scheme macros, namespaces.
De : No_spamming (at) *nospam* noWhere_7073.org (B. Pym)
Groupes : comp.lang.lisp
Date : 03. Jul 2024, 13:58:56
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v63edt$2637i$1@dont-email.me>
User-Agent : XanaNews/1.18.1.6
To take a simple example:
 
(define-syntax -->
   (syntax-rules ()
     ((_ . original)
      (-->helper () original))))
 
(define-syntax -->helper
    (syntax-rules ()
      ((_ pairs (x0 y0 . more))
       (-->helper ((x0 y0) . pairs) more))
      ((_ pairs body)
       (let pairs . body))))
 
 
 
(defmacro --> (&rest [var-val]*-body)
  `(let ,(loop for (var val) on (butlast [var-val]*-body) by (function cddr)
               collect (list var val))
     ,@(last [var-val]*-body)))

The helper macro isn't needed.

Scheme (Gauche and Racket):

The goal is a let-macro that doesn't need parentheses
around the bindings.  Only one expression is allowed
after the bindings.


(define-syntax -->
  (syntax-rules ()
    [ (_  ((k v) ...) expr)
      (let ((k v) ...) expr) ]
    [ (_  ((k v) ...) a b  . more)
      (--> ((k v) ... (a b))  . more) ]
    [ (_  a b c more ...)
      (--> () a b c more ...) ]))

(--> a 2 m 44 z 88 (print (list a m z)))
  ===>
(2 44 88)

(--> a 2 m 44 z 88 )
  ===>
; stdin:10:0: -->: bad syntax
;   in: (--> ((a 2) (m 44) (z 88)))

Date Sujet#  Auteur
3 Jul 24 * Re: CL vs scheme macros, namespaces.2B. Pym
3 Jul 24 `- Re: CL vs scheme macros, namespaces.1Kaz Kylheku

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal