假设我有一些代码:
let listB = [ 1; 2; 3 ]
使用Lisp表示法,我该如何处理car
并cadr
反对此列表?我知道缺点是::
.
或者在Scheme中,first
和rest
?
List.hd和List.tl将做你想要的 - 但在F#中你会发现列表通常是使用模式匹配解构的.例如,在下面的函数中,x匹配head,xs匹配传递给函数的列表的尾部:
let list = [1;2;3] let rec f = function | [] -> 1 | (x::xs) -> x * (f xs) f list;
List.head:返回非空列表的第一个元素(列表的头部).
List.tail:返回除第一个(列表的尾部或其余部分)之外的非空列表的所有元素.
示例(使用F#Interactive Console):
> let sample = [1;2;3;4];; val sample : int list > List.head sample;; val it : int = 1 > List.tail sample;; val it : int list = [2; 3; 4]