OCaml 缺点目的

use*_*945 2 ocaml cons

我正在阅读 OCaml 的语言手册并遇到了“缺点”运算符,表示为

::
Run Code Online (Sandbox Code Playgroud)

然而,它并不解释什么是,什么它通常用于。

Jef*_*eld 6

这是基本的列表结构运算符。该列表[1; 2; 3]是使用::运算符的三个应用程序构建的:

$ ocaml
        OCaml version 4.01.0

# 1 :: 2 :: 3 :: [];;
- : int list = [1; 2; 3]
Run Code Online (Sandbox Code Playgroud)

(这个操作从 50 年前的早期 Lisp 时代起就被称为cons。)

::运营商还可以出现在模式,以解构的列表:

let rec length l =
    match l with
    | [] -> 0
    | h :: t -> 1 + length t
Run Code Online (Sandbox Code Playgroud)

  • 大致意思是:如果给定的列表非空,那么它必须有一个头和一个尾。调用头部`h`并调用尾部`t`。是的,头部是单个元素,尾部是元素列表(其余元素)。 (2认同)