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

时间:2017-01-16 22:36:03

标签: sml

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

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

2 个答案:

答案 0 :(得分:1)

由于Ashkan Parsa提到CS317 SML Style Guide,我想我会指出你可能从中得到什么。

  1. 让函数名称以小写字母开头,例如evalR

  2. 不要写if ... then true else false;只需写下...

  3. 有些人不同意;类型推断肯定是有用的,但类型推断也是如此。

  4. 正如纳齐拉所说,标准ML中的and运算符称为andalso

  5. 所以,

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

    函数体包含= s与使用=定义的函数同时将函数参数与函数体分开,这似乎令人感到困惑。只需将后者=视为值运算符,将第一=视为声明事物(如类型,值,函数等)的一部分。

答案 1 :(得分:0)

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