我是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;
答案 0 :(得分:1)
由于Ashkan Parsa提到CS317 SML Style Guide,我想我会指出你可能从中得到什么。
让函数名称以小写字母开头,例如evalR
。
不要写if ... then true else false
;只需写下...
。
有些人不同意;类型推断肯定是有用的,但类型推断也是如此。
正如纳齐拉所说,标准ML中的and运算符称为andalso
。
所以,
fun evalR (n, k, z) =
n = 42 andalso k = 43 andalso z = 0
函数体包含=
s与使用=
定义的函数同时将函数参数与函数体分开,这似乎令人感到困惑。只需将后者=
视为值运算符,将第一=
视为声明事物(如类型,值,函数等)的一部分。
答案 1 :(得分:0)
我找到了。我们可以在SML中使用andalso。