有人知道如何用ML中的几个语句定义函数吗



我正在尝试用CPN ML编写一个函数,它可以更改3个变量,但我不知道如何,我只能编写一条语句。我的功能应该是这样的:

fun T1() =
x=x+1;
y=y+2;
k=k-1;

当我写这几行代码时,我得到了一个错误。

注意:我对CPN-ML一无所知,但基于此,我猜它的语法与标准ML相似?

在这种情况下,您需要将语句分组在括号中:

fun T1 () =
  (x=x+1;
   y=y+2;
   k=k-1)

在SML中,表达式也可以在let表达式的正文中用分号分隔,如下所示:

fun T1() =
  let in
    x=x+1;
    y=y+2;
    k=k-1
  end

有些人更喜欢这个而不是括号,因为它看起来更具块结构。它还为您提供了一个插入声明的位置(在let.in部分中),这是函数进化的常见方式。

当然,由于这是一种函数式语言,您需要使用引用单元格(x:=!x+1)或声明新变量(valx=x+1)来完成函数体中的操作。并没有像C中那样的"语句",所有的变量都是不可变的。

最新更新