7

我是 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] 运算符:表达式中的 int:1 stdIn:66.3-67.9 错误:运算符和操作数 don '不同意 [literal] 运算符域:bool * bool 操作数:bool * int 表达式:x = (1) y = 2

谢谢

4

4 回答 4

12

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

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

于 2012-11-17T12:15:37.740 回答
1

我可以不同意 Vishal 的评论吗?

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

认为(REPL 也是如此)

真实的也真实的;

评估为真,而不是假

于 2018-01-14T03:52:41.993 回答
-1

这是一个示例,它将清除 andalso 的用法

-true andalso true ;
val it = false : bool
- true andalso false ; 
val it = false : bool
于 2017-09-22T12:32:53.723 回答
-1

数字门中的一加一始终为 1;因此,在上述情况下,真和真“必须必然评估为真,而不是假;我是正确的吗?还有 1 和 0 也不能永远是 1;

1或0可以是1;

于 2018-05-10T23:04:13.560 回答