【问题标题】:if statement checking multiple conditions in SMLif 语句检查 SML 中的多个条件
【发布时间】:2017-01-16 22:36:02
【问题描述】:

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

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

【问题讨论】:

    标签: sml


    【解决方案1】:

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

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

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

    3. 有些人不同意;类型注解当然有用,但类型推断也是如此。

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

    所以,

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-13
        • 1970-01-01
        • 1970-01-01
        • 2017-12-08
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        • 2020-12-10
        相关资源
        最近更新 更多