Каковы преимущества преобразователя-преобразователя схемы R6RS? - PullRequest
2 голосов
/ 28 ноября 2008

Просматривая раздел syntax-case в R6RS, я увидел ключевое слово make-variable-transformer, описанное как макрос идентификатора . Приведенный пример очень минимален, и я не зацикливаюсь на том, зачем это нужно, или какие варианты использования этого требуют. Найти дополнительные примеры его использования также сложно. Предположительно, это делает возможным преобразование синтаксиса в какой-либо форме или более элегантным?

Ответы [ 2 ]

2 голосов
/ 03 декабря 2008

После прочтения http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html#node_sec_12.3 мой вывод выглядит следующим образом:

Если mac является синтаксическим преобразователем

(mac foo (bar baz)) заменит весь s-expr результатом преобразования, что может привести к чему-либо, скажем (SOMETHING), тогда как (foo mac bar) заменит только mac, что приведет к (foo SOMETHING bar).

Обычно (set! mac 'foo) будет сигнализировать об ошибке, кажется, что преобразователь не может появиться слева от выражения набора, но если mac является переменным преобразователем, (set! mac 'foo) вместо этого вызовет mac со всем s- выраж.

Моя интуиция подсказывает мне, что это будет полезно, если вы начнете реализовывать типы данных с помощью макросов.

1 голос
/ 17 июня 2009

Я наткнулся на этот поиск документации по make-variable-transformer. Вот проблема, которая у меня была, что make-variable-transformer был предложен для ...

http://groups.google.com/group/comp.lang.scheme/browse_frm/thread/96b07d431f1a66de/777f8e07ae1855f3#777f8e07ae1855f3

Джек Торг

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...