Как я могу удалить ключевые слова «if… then… else…» в Haskell (GHC)?

Я хотел бы удалить if ... then ... else ... ключевые слова, потому что я встраиваю язык / DSL в Haskell. if , , то и else передают много смысла во многих областях, и было бы здорово, если бы я мог переопределить (или оставить их неопределенными), чтобы отразить характер языка / домена.

Я искал в Google и stackoverflow, но ничего не нашел. (Я нашел старую ветку о том, почему if ... then ... else ... было включено в качестве ключевых слов в Haskell.)

Моя IDE находится в Leksah, и, если ключевые слова могут быть удаленным, также было бы неплохо иметь настройку для изменения if ... then ... else ... ключевые слова обратно к их обычному шрифту / цвету / без жирного шрифта.


Я уже пробовал использовать соглашение об именах if ' для if и так далее. выглядит не так хорошо, как , особенно когда я хочу определить if и if ', и мне нужно определить if' и if '' вместо или if1 и if2 . Наличие обоих if ' и if также может сбивать с толку. (Путаница не такая уж серьезная проблема в моей ситуации, поскольку пользователи DSL являются программистами на Haskell, но я полагаю, что это может помочь в других ситуациях.)


Подводя итоги ответов на сегодняшний день:

  • Используйте RebindableSyntax расширение GHC. Не столь общий, как удаление ключевых слов: синтаксис if-then-else в Haskell сохраняется. (Frerich Raabe)
  • Решение: используйте очень похожие слова / имена, используя данные Условное b a = If b (Then a) (Else a) (применимо только в некоторых контекстах). (C.A. McCann)

Если RebindableSyntax является относительно новой функцией, то вряд ли можно будет найти более общий способ, по крайней мере, до следующей версии GHC.

16
задан Dingfeng Quek 10 August 2011 в 05:45
поделиться