[racket] macro question

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Thu Sep 25 10:17:49 EDT 2014

I won't answer the question about R5RS, but in Racket you can do this
fairly succinctly:

#lang racket/base
(require (for-syntax racket/base
                     racket/syntax))

(define-syntax (vars stx)
  (syntax-case stx ()
    [(_ id count val)
     (with-syntax
         ([(id_i ...)
           (for/list ([i (in-range 1 (add1 (syntax->datum #'count)))])
             (format-id #'id "~a~a" #'id i))])
     (syntax/loc stx
       (begin (define id_i val)
              ...)))]))

(vars id 5 null)

(vector id1 id2 id3 id4 id5)

2014-09-24 22:35 GMT-04:00 Alejandro Zamora <terefv at ltu.sld.cu>:
> Hi Racket people:
>         I have a (maybe too simple) question:
>         How I create one macro like this (but using define-macro &
>         R5RS language only)?:
>
>         (vars sym var-cant val-of-vars)
>
>         Example:
>         (vars id 5 null) -> (prog (define id1 null)
>                                   (define id2 null)
>                                   (define id3 null)
>                                   (define id4 null)
>                                   (define id5 null))
>
> --
> Nunca digas nunca, di mejor: gracias, permiso, disculpe.
>
> Este mensaje le ha llegado mediante el servicio de correo electronico que ofrece Infomed para respaldar el cumplimiento de las misiones del Sistema Nacional de Salud. La persona que envia este correo asume el compromiso de usar el servicio a tales fines y cumplir con las regulaciones establecidas
>
> Infomed: http://www.sld.cu/
>
> ____________________
>   Racket Users list:
>   http://lists.racket-lang.org/users



-- 
Jay McCarthy
http://jeapostrophe.github.io

           "Wherefore, be not weary in well-doing,
      for ye are laying the foundation of a great work.
And out of small things proceedeth that which is great."
                          - D&C 64:33


Posted on the users mailing list.