List OCaml:如何返回列表的第一个元素,然后将其从列表中删除?
我尝试使用List.hd和List.tl执行此任务: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类型签名时,第一个参数是函数接收的
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)