我是Haskell的新学习者。我对Haskell背后的语法机制了解不多。
在某些命令式编程语言中,例如C / Java,感叹号“!”不用作逻辑。
与此同时,Haskell将关键字“ not”用作“逻辑非”。但是,Haskell使用“ &&”和“ ||”作为逻辑运算符。
很明显,Haskell避免使用“!”表达“不”的概念,例如“不等于”是“ / =“,而不是“!=”。
换一种说法,我猜想,如果将关键字“模块”更改为“程序包”,除了将所有现有代码中的所有“模块”改为“程序包”之外,不会发生任何严重的事情。
我想知道,是否有人将关键字“ not”更改为“!”在Haskell,会发生什么?
补语:
答案 0 :(得分:7)
如果您对后缀运算符感到满意,甚至可以尝试此操作,但这需要使用PostfixOperators
语言扩展名
{-# LANGUAGE PostfixOperators #-}
(!) = not
main = print (True !)
-- False
我觉得这很合理,
答案 1 :(得分:4)
Haskell没有一元前缀运算符,因此您不能像其他所有运算符一样将其定义为库函数。
唯一的例外是unary minus,这是一种特殊的词汇技巧,可以避免人们期望能够写例如以下内容的事实。
x = (-y) * 5
但这有一个缺点,尽管(*5)
是一个“节”(即给定一个参数的二进制运算符,并返回一个期望另一个的函数),而(-y)
不是节,但是y
的否定。
因此,如果您想将列表中的所有成员乘以5,可以这样做
xs = map (*5) ys
但是,如果您想从列表的所有成员中减去5,这将不起作用:
xs = map (-5) ys
相反,您必须写
xs = map (subtract 5) ys