List OCaml:如何返回列表的第一个元素,然后将其从列表中删除?

List OCaml:如何返回列表的第一个元素,然后将其从列表中删除?,list,functional-programming,ocaml,tail,List,Functional Programming,Ocaml,Tail,我尝试使用List.hd和List.tl执行此任务: let takeCard fst deck = fst = List.hd deck List.tl deck List.hd接受两个参数,但我不明白为什么 我认为这里有一些误解 首先,OCaml中的大多数类型是不可变的。除非使用变量,否则不能“从列表中删除”,只能返回没有第一项的列表版本。如果您想返回这两个东西,可以使用一个 其次,List.hd只接受一个元素。OCaml利用了。读取OCaml类型签名时,第一个参数是函数接收的

我尝试使用List.hdList.tl执行此任务:

let takeCard fst deck =   
fst = List.hd deck   
List.tl deck

List.hd
接受两个参数,但我不明白为什么

我认为这里有一些误解

首先,OCaml中的大多数类型是不可变的。除非使用变量,否则不能“从列表中删除”,只能返回没有第一项的列表版本。如果您想返回这两个东西,可以使用一个


其次,List.hd只接受一个元素。OCaml利用了。读取OCaml类型签名时,第一个参数是函数接收的参数,最后一个参数是函数返回的参数。因此,List.hd的签名
'a List->'a
意味着它接收一个包含(
'a
用作占位符)的列表,并返回该列表包含的内容类型(在本例中为第一个元素).

请检查此项,它将有助于提高您的内容质量。
fst=List.hd deck
fst
deck
的第一个元素进行比较,并忽略结果。
let takeCard deck = (List.hd deck, List.tl deck)