我是一名新的Haskell学习者.我不太了解Haskell背后的语法机制.
在一些命令式编程语言中,例如C/Java,感叹号"!" 用作逻辑而不是.
同时,Haskell使用关键字"not"作为"逻辑不".但是,Haskell使用"&&"和"||" 作为逻辑运算符.
显然,Haskell避免使用"!" 表达"不"的概念,例如"不等于"是"/ ="但不是"!=".
从另一个角度来看,我想,如果将关键字"模块"更改为"包",除了在所有现有代码中用"包"更改所有"模块"之外,不会发生任何严重的事情.
我想知道,如果将关键字"not"更改为"!" 在Haskell,会发生什么?
补充:
如果您对后缀运算符感到满意,甚至可以尝试此操作,但这需要使用PostfixOperators
语言扩展名
{-# LANGUAGE PostfixOperators #-}
(!) = not
main = print (True !)
-- False
Run Code Online (Sandbox Code Playgroud)
我觉得这很合理,不是.
Haskell 没有一元前缀运算符,因此您不能像所有其他运算符一样将其定义为库函数。
唯一的例外是一元减号,这是一种特定的词汇黑客,旨在绕过人们期望能够编写例如
x = (-y) * 5
Run Code Online (Sandbox Code Playgroud)
然而,这有一个缺点,即 while(*5)
是一个“节”(即给定一个参数并返回一个需要另一个参数的二元运算符),(-y)
它不是一个节,而是 的否定y
。
所以如果你想将列表中的所有成员乘以 5,你可以这样做
xs = map (*5) ys
Run Code Online (Sandbox Code Playgroud)
但如果你想从列表的所有成员中减去 5,这不起作用:
xs = map (-5) ys
Run Code Online (Sandbox Code Playgroud)
相反你必须写
xs = map (subtract 5) ys
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
467 次 |
最近记录: |