Ну, вопрос самоочевиден. Предположим, я хочу реализовать специальный синтаксис только для удовольствия. Является ли это возможным? Какие инструменты следует использовать?
Можно ли перетащить ваш собственный синтаксический сахар (например, нотация или стрелочная нотация) в Haskell?
Ответ 1
В стандарте Haskell такого мета-синтаксиса нет, но есть в GHC. Вы можете сделать практически любую нотацию, которую хотите использовать с помощью установок квазиколичества GHC (которые отличаются от объекта "Шаблон Haskell" ).
Руководство пользователя GHC об этом довольно коротко и в основном указывает на haskell wiki на Quasiquotation и домашней странице обе из них указывают на оригинальную публикацию: "Почему его приятно котировать: Quasiquoting for Haskell" .
Люди использовали квази-цитату для вложения синтаксиса XML, регулярных выражений, специальных строковых и текстовых форм, а в "JMacro - библиотека для программного генерации кода Javascript".
Ответ 2
Думаю, лучшим способом было бы написать пользовательский препроцессор. Из этого подхода вышло несколько синтаксических расширений. Например, см.
- DrIFt: Автоматизированная генерация экземпляров класса типов
- arrowp: препроцессор для обозначения стрелок
- c2hs: автоматическая генерация информации о сортировке и подписи типов для привязок FFI
и многое другое. Другим способом является исправление GHC, но этот подход довольно сложный.