程序

语句序列可以包装到名为 procedure . 此外,过程可以接受参数。接受变量称为参数。

类型

写入参数类型为T的过程的类型

T -> 0

过程是一个子例程,它返回控制,但不返回值。为了有用,过程必须更改程序或其环境的状态。这叫做效应。

Felix中的过程是一流的,可以用作值。

定义

程序定义如下:

proc doit (x:int) {
   println$ x;
   x = x + 1;
   println$ x;
}

过程在完成时可以显式返回控制。

proc maybedoit (x:int) {
  if x > 0 do
    println$ x;
    return;
  done
  x = -x;
  println$ x;
}

如果过程末尾没有return语句,则隐式插入一个。

过程可以有一个单位参数:

proc hello () {
  println$ "Hello";
}

调用

使用call语句调用过程。标识符 call 可以省略。如果参数是单位,也可以省略。

proc hello () {
  println$ "Hello";
}
call hello ();
hello ();
hello;