如何在SML的IF语句中使用AND运算符

时间:2012-11-17 12:02:06

标签: sml smlnj ml

我是SML的新手。 如何在IF语句中使用AND运算符? 这是我的代码:

val y = 1;
val x = 2;
if (x = 1 AND y = 2) then print ("YES ") else print("NO ");

我的错误是: stdIn:66.9-67.3错误:未绑定的变量或构造函数:AND stdIn:66.3-67.9错误:运算符不是函数[literal]   operator:int   表达式:     1 stdIn:66.3-67.9错误:运算符和操作数不一致[literal]   运营商域名:bool * bool   操作数:bool * int   表达式:     x =(1)y = 2

谢谢

4 个答案:

答案 0 :(得分:8)

SML中没有AND运算符(除非您自己定义一个)。有and个关键字,但您不能在if语句中使用它(或通常作为任何表达式的一部分),因为它不是运算符。它与fun结合使用来定义相互递归的函数。

你可能正在寻找andalso运算符,它接受两个布尔操作数,当且仅当两个操作数都为真时返回true。

答案 1 :(得分:0)

我可否不同意维沙尔的评论?

*-true andalso true ;     
val it = false : bool
-true andalso false ;  
val it = false : bool*

认为(以及REPL也是如此)

  

是真的,也是如此;

评估为真,而不是假

答案 2 :(得分:-1)

这里有一个例子,它将清除andalso

的用法
-true andalso true ;
val it = false : bool
- true andalso false ; 
val it = false : bool

答案 3 :(得分:-1)

数字门中的一个和一个总是1;因此 在上述情况下,真实也是真实的“必须评估为真,而不是虚假;我是否正确? 1和0也不能永远不是1;

1或0可以是1;