LINUX.ORG.RU

В PLT Scheme можно так (только я не могу понять, зачем это надо)

(require (lib "defmacro.ss"))

(define-macro (foo a)
  `(define
     ,(string->symbol (string-append (symbol->string a) "1")) 1)
  `(define
     ,(string->symbol (string-append (symbol->string a) "2")) 2))

> (foo x) x1 x2
> 1
> 2

grob ★★★★★
()
Ответ на: комментарий от grob

да, стандартными hygienic macros такое сделать нельзя

grob ★★★★★
()
Ответ на: комментарий от grob

>В PLT Scheme можно так

Вот что-то подобное я пытался подсунуть в scheme48, но оно ругалось

>(только я не могу понять, зачем это надо)

Мне нужен был макрос типа (define-struct struct-name name1 name2 name3...), который резервиут symbol для struct, и герерит is-struct?, make-struct , get-name1, set-name1 ...

>да, стандартными hygienic macros такое сделать нельзя

Наверно примерно это я и хотел услышать. Посмотрю в сторону MZScheme, спасибо

ival ★★
() автор топика
Ответ на: комментарий от ival

В PLT Scheme уже есть define-struct с именно такой функциональностью.

grob ★★★★★
()

У меня в pocket scheme и в qscheme работает следующая конструкция:

(define-macro (dummy-def x)
  `(begin
     (define ,(string->symbol (string-append (symbol->string x) "1")) 1)
     (define ,(string->symbol (string-append (symbol->string x) "2")) 2)))

swizard
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.