如何在Haskell中定义非固定运算符?

3
在 SML 中,“nonfix”运算符可以像这样使用:
datatype Proposition = Not_ of Proposition 

nonfix ~:
val ~: = Not_ 


在 Haskell 中,它会像这样:
data Proposition = Not_ Proposition 

nonfix ~
(~) = Not_ 

但我在Haskell中没有找到“nonfix”的等价物。


3
在 Haskell 中没有一元操作符,除了用于取反值的一元运算符“-”。 - Willem Van Onsem
我想表示一个类似于这样的逻辑命题:p ==> q <=> ¬ p /\ q,但我需要表示否定符号 - fyxov
1
https://wiki.haskell.org/Unary_operator。一元运算符“-”基本上是由解析器处理的特殊情况,而不仅仅是可能的一元运算符类中唯一存在的成员。 - chepner
1
你可以通过使用像ᓕ U+14D5加拿大音节LIへ U+3078平假名字母HE这样的符号来作弊,它们可以像任何字母一样用作函数名称。 - leftaroundabout
此外,请参见 https://dev59.com/82Qo5IYBdhLWcg3wQdet 了解有关 后缀 一元运算符的定义。 - chepner
@leftaroundabout 也许加拿大音节LE(ᓓ)或希伯来字母WIDE RESH(ﬧ)也是不错的选择。对于不知道的人,shapecatcher是一个很好的资源。 - Daniel Wagner
1个回答

2

你没有找到一个等同的因为并不存在。需要制定不同的计划,可选方案包括使用非嵌入式DSL;准引用;使用后缀而非前缀;使用非运算符名称(例如not(!));使用CPP或另一个预处理器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接