Я хотел бы удалить ключевые слова if ... then ... else ...
, потому что я встраиваю язык /DSL в Haskell. if
, then
и else
передают много смысла во многих доменах, и было бы замечательно, если бы я мог переопределить (или оставить их undefined) для отражения природы языка/домена.
Я искал в 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. Не так, как обычно, как удаление ключевых слов: синтаксис Haskell if-then-else сохраняется. (Фририк Раабе) - Временное решение: используйте очень похожие слова/имена, используя
data Conditional b a = If b (Then a) (Else a)
(применимо только в некоторых контекстах). (C. A. McCann)
Если RebindableSyntax
- относительно новая функция, то вряд ли можно найти более общий способ, по крайней мере, не до следующей версии GHC.