检查SML中多个条件的if语句

检查SML中多个条件的if语句,sml,Sml,我是SML新手,我编写了一个程序,它接受3个整数(n,z,k),并希望将它们与程序中给定的值进行比较,如果语句正确,它将返回true,否则返回false。条件和值应该同时相等,我的意思是,如果所有这些数字都等于程序中给定的值,程序将返回true,所以我的if语句应该同时检查3个条件。 我的问题是,我不知道如何在一个if子句中写出所有这3个条件,因为SML不识别例如&或^as and! 例如,我想检查是否(n==8&&k==5&&z==9)。我应该用什么来代替& 代码如下: fun EvalR (

我是SML新手,我编写了一个程序,它接受3个整数(n,z,k),并希望将它们与程序中给定的值进行比较,如果语句正确,它将返回true,否则返回false。条件和值应该同时相等,我的意思是,如果所有这些数字都等于程序中给定的值,程序将返回true,所以我的if语句应该同时检查3个条件。 我的问题是,我不知道如何在一个if子句中写出所有这3个条件,因为SML不识别例如&或^as and! 例如,我想检查是否(n==8&&k==5&&z==9)。我应该用什么来代替& 代码如下:

fun EvalR (n: int , k: int , z:int) = 
if (n=8 ???) then true
else false;

我找到了。我们可以在SML中使用andalso。

因为Ashkan Parsa提到了,我想我会指出你可能从中得到什么

  • 让函数名以小写开头,例如
    evalR

  • 如果。。。然后为真,否则为假;只需编写

  • 有些人不同意;类型注释当然是有用的,但类型推断也是有用的

  • 正如nazila所说,标准ML中的and运算符被称为
    andalso

  • 所以

    函数体包含
    =
    的同时,函数被定义为一个
    =
    ,以将函数参数与函数体分离,这似乎是一致的。只需将后一个
    =
    视为值运算符,将第一个
    =
    视为声明内容的一部分(如类型、值、函数等)

    fun evalR (n, k, z) =
        n = 42 andalso k = 43 andalso z = 0