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

Можно ли перетащить ваш собственный синтаксический сахар (например, нотация или стрелочная нотация) в Haskell?

Ну, вопрос самоочевиден. Предположим, я хочу реализовать специальный синтаксис только для удовольствия. Является ли это возможным? Какие инструменты следует использовать?

4b9b3361

Ответ 1

В стандарте Haskell такого мета-синтаксиса нет, но есть в GHC. Вы можете сделать практически любую нотацию, которую хотите использовать с помощью установок квазиколичества GHC (которые отличаются от объекта "Шаблон Haskell" ).

Руководство пользователя GHC об этом довольно коротко и в основном указывает на haskell wiki на Quasiquotation и домашней странице обе из них указывают на оригинальную публикацию: "Почему его приятно котировать: Quasiquoting for Haskell" .

Люди использовали квази-цитату для вложения синтаксиса XML, регулярных выражений, специальных строковых и текстовых форм, а в "JMacro - библиотека для программного генерации кода Javascript".

Ответ 2

Думаю, лучшим способом было бы написать пользовательский препроцессор. Из этого подхода вышло несколько синтаксических расширений. Например, см.

  • DrIFt: Автоматизированная генерация экземпляров класса типов
  • arrowp: препроцессор для обозначения стрелок
  • c2hs: автоматическая генерация информации о сортировке и подписи типов для привязок FFI

и многое другое. Другим способом является исправление GHC, но этот подход довольно сложный.