Подтвердить что ты не робот

Коллекция больших приложений и программ с использованием макросов

Я очень заинтересован в Макросах и только начинаю понимать его истинную силу. Пожалуйста, помогите мне собрать большое использование макросистем.

До сих пор у меня эти конструкции:

Соответствие шаблону:

Эндрю Райт и Брюс Дуба. Шаблон сопоставление для Схемы, 1995

Отношения в духе Пролога:

Дорай Ситарам. Программирование в schelog. http://www.ccs.neu.edu/home/dorai/schelog/schelog.html

Даниэль П. Фридман, Уильям Э. Бирд, и Олег Киселев. Рассужденный Schemer. Пресса MIT, июль 2005 г.

Маттиас Феллеисен. транслитерации Пролог в схему. Технический отчет 182, Университет Индианы, 1985 г.

Расширяемые контуры:

Себастьян Эгнер. Стремительное понимание в схеме: дизайн SRFI-42. В Семинар по схеме и функциональному Программирование, страницы13-26, сентябрь 2005.

Олин дрожит. Анатомия цикла: a история охвата и контроля. В Международная конференция по функциональным Программирование, страницы 2-14, 2005.

Системы классов:

PLT. PLT MzLib: Руководство по библиотекам. Технический отчет PLT-TR2006-4-v352, PLT Scheme Inc., 2006. http://www.plt-scheme.org/techreports/

Эли Барзилай. Лохотрон. http://www.barzilay.org/Swindle.

Компонентные системы:

Райан Калпеппер, Скотт Оуэнс и Мэтью Флатт. Синтаксическая абстракция в интерфейсах компонентов. В Международная конференция по Программирование и компонентная инженерия, страницы 373-388, 2005

Проверка контрактов на программное обеспечение

Мэтью Флатт и Маттиас Феллеисен. Единицы: Прохладные модули для языков HOT В конференции ACM SIGPLAN Программирование языка Реализация, страницы 236-248, 1998

Оскар Уодделл и Р. Кент Дыбвиг. Расширение сферы синтаксиса абстракция. В Симпозиуме по принципам языков программирования, страниц 203-215, 199

Генераторы Parser

Скотт Оуэнс, Мэтью Флатт, Олин Дрожь, и Бенджамин Макмуллан. лексер и генераторы парсера в Схеме. В Семинар по схеме и функциональному Программирование, страницы 41-52, сентябрь 2004.

Инструменты для инженерной семантики:

Маттиас Феллейсен, Роберт Брюс Findler, и Мэтью Флатт. Семантика Инженерное дело с PLT Redex. MIT Press, Август 2009 года.

Спецификации трансформаций компилятора:

Дипанвита Саркар, Оскар Уодделл и Р. Кент Дыбвиг. Нанопасс рамки для обучения компиляторов. Журнал функциональных Программирование, 15 (5): 653-667, сентябрь 2005. Обучающая жемчужина.

Новые формы выполнения

Сервлеты с сериализуемыми продолжения Грег Петтион, Джон Клементс, Джо Маршалл, Шрирам Кришнамурти и Маттиасом Феллезином. Продолжения из обобщенного стека осмотр. В международном Конференция по функциональному программированию, pages216-227, 2005.

Теоретико-доказательная система

Себастьян Эгнер. Стремление к пониманию схемы: дизайн SRFI-42. В семинаре по схеме и функциональному программированию, стр. 13-26, Сентябрь 2005 года.

Расширения базового языка с типами

Сэм Тобин-Хохштадт и Маттиас Феллесины. Дизайн и реализация типизированной схемы. В Симпозиум по принципам программирования Языки, страницы 395-406, 2008.

Лень

Эли Барзилай и Джон Клементс. Лень без всяких трудных работа: объединение ленивых и строгих языки для обучения. В функциональном и декларативное программирование в образование, страницы 9-13, 2005.

Функциональная реактивность

Грегори Х. Купер и Шрирам Кришнамурти. Встраивание динамических поток данных на языке вызова по значению. В Европейском симпозиуме по программированию, 2006


Ссылка:

Собрано из История Райана Кулпеппера

4b9b3361

Ответ 1

Culpepper и Felleisen, Укрепляющие макросы, ICFP 2010

Culpepper, Tobin-Hochstadt and Felleisen, передовая макрология и внедрение типизированной схемы, семинар по схемам 2007

Flatt, Findler, Felleisen, схема с классами, миксинами и чертами, APLAS 2006

Герман, Менье, улучшение статического анализа встроенных языков с помощью частичной оценки, ICFP 2004

Ответ 2

Shivers, Carlstrom, Gasbichler и Sperber (1994 и последующие) Справочное руководство Scsh.

Имеет много хороших примеров использования макросов для встраивания мини-языков в Схему. Предложил мне технику определения макросов, которые неявно цитируют их аргумент. Посмотрите на использование форм процесса, регулярных выражений и awk-подобных мини-языков. Scsh - моя рекомендация в качестве отправной точки для игры с макросами.

Hilsdale and Friedman (2000) Написание макросов в стиле продолжения прохождения.

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

Flatt, Culpepper, Darais и Findler (представлены) Макросы, которые работают вместе - привязки времени компиляции, частичное расширение и контексты определения.

Предоставляет обзор и семантику для подхода к макросам в схеме Racket/PLT. Не так много примеров, но я думаю, что в документе есть что-то, что вы ищете.

Ответ 3

ReadScheme! Не забудьте проверить обширную библиографию на ReadScheme.

http://library.readscheme.org/page3.html

Один пример, который, я думаю, вы пропустили, - это встраивание синтаксиса SQL в Scheme. http://repository.readscheme.org/ftp/papers/sw2002/schemeunit-schemeql.pdf

Макросы также используются для записи носителей для автоматического тестирования.

Ответ 4

Не схема, а несколько похожий диалект Lisp с очень широким использованием макросов: http://www.meta-alternative.net/mbase.html

Существуют макросы, реализующие различные типы сопоставлений шаблонов, списки, различные генераторы парсеров (включая реализацию PEG/Packrat), встроенный Prolog, вывод посетителей ADT (например, лома вашего шаблона в Haskell), расширяемые синтаксические макросы, Hindley-Milner Scheme-подобный макрос синтаксиса и многие другие. Части этой функциональности могут быть потенциально перенесены на Схему, другие части нуждаются в расширенной макросистеме с явным контекстом.

Ответ 5

Я бы добавил в список "Стандартную библиотеку Схемы". Посмотрите файл boot-9.scm в дистрибутиве guile. Многие из наиболее часто используемых форм схемы - case, and и т.д. - определяются там как макросы.

Ответ 6

Это не особенно точно, поскольку он распространяется по большому количеству очень старых публикаций, большинство из которых я никогда не читал, но большие фрагменты IIRC общей системы Lisp Object и Meta- Объектный протокол *, может быть; находятся; или были изначально построены с макросами...

*, которые составляют IMHO, на сегодняшний день самое продвинутое системное программирование OO когда-либо видели

Ответ 8

Проверьте одну из моих реализаций избранного REST API: клиент Slack api, который не написан на Схеме, но он находится в Racket.

octotep/racket-slack-api