2. 值、类型与函数

let 绑定不可变,var 可变。基本类型有 IntFloatBoolString。 顶层函数必须写全参数类型与返回类型——签名即契约。

fn square(x: Int) -> Int = x * x

fn abs(x: Int) -> Int =
  if x < 0 { 0 - x } else { x }

pub fn main() -> Unit !io = {
  var total = 0
  total = total + square(3)
  total = total + abs(-4)
  println(to_string(total))
}
在 Playground 打开
13

管道 |> 把左侧塞进右侧调用的第一个参数,读起来是数据的流向:

fn double(x: Int) -> Int = x * 2
fn inc(x: Int) -> Int = x + 1

pub fn main() -> Unit !io =
  5 |> double |> inc |> to_string |> println
在 Playground 打开
11