我想删除if ... then ... else ...
关键字,因为我在 Haskell 中嵌入了一种语言/DSL。if
,then
并else
在许多领域传达了很多意义,如果我可以重新定义(或不定义)它们以反映语言/领域的性质,那就太好了。
我在 Google 和 stackoverflow 上搜索过,但一无所获。if ... then ... else ...
(我确实找到了一个关于为什么在 Haskell 中作为关键字包含的旧线程。)
我的 IDE 在 Leksah 中,如果可以删除关键字,那么设置将if ... then ... else ...
关键字更改回其正常字体/颜色/非粗体也是很好的。
我已经尝试过if'
forif
等的命名约定。感觉不太好,尤其是当我想定义if
and if'
,并且必须定义if'
andif''
而不是 or if1
and时if2
。两者的存在if'
也if
可能令人困惑。(在我的情况下,混淆并不是那么严重的问题,因为 DSL 的用户是 Haskell 程序员,但我认为它在其他情况下会有所帮助)。
总结迄今为止的回应:
- 使用
RebindableSyntax
GHC 的扩展。不像删除关键字那样通用:保留了 Haskell 的 if-then-else 的语法。(弗里希·拉贝) - 解决方法:通过使用
data Conditional b a = If b (Then a) (Else a)
(仅适用于某些情况)使用非常相似的单词/名称。(加州麦肯)
如果RebindableSyntax
是一个相对较新的功能,那么它不太可能找到更通用的方法,至少要等到 GHC 的下一个版本。