> 1 <

Автор Сообщение

rv82

Members


Статус

46 сообщений
http://rv82.ya.ru
Где: Russia
Род занятий:
Возраст:

#4438   2011-06-06 11:53 GMT+3 часа(ов)      
Широко использую в своей практике макросы syntax-rules. Но, хотелось бы узнать:

    1 в чём отличие syntax-case от syntax-rules;
    2 для каких целей используются макросы syntax-case?

Ведь, раз они есть, значит это кому-то нужно?

misha

Moderators


Статус

1275 сообщений
http://racket-lang.org/
Где: Yemen
Род занятий:
Возраст:

#4440   2011-06-06 15:25 GMT+3 часа(ов)      
syntax-case используется в основном для создания сложных макросов (и необязательно гигиенических).
(define-syntax (hygienic+1 so)
(syntax-case so ()
[(_ a) #'(add1 a)]))
 
(define-syntax (unhygienic+1 so)
(syntax-case so ()
[(_ a)
(datum->syntax
so
`(add1 ,(syntax->datum #'a)))]))
 
> (let ([add1 sub1])
(hygienic+1 0))
1
> (let ([add1 sub1])
(unhygienic+1 0))
-1
> 1 <


Онлайн :

0 пользователь(ей), 60 гость(ей) :