OCaml:如何 return 列表的第一个元素,然后将其从列表中删除?
OCaml: How can I return the first element of a list and after that remove it from the list?
我尝试使用 List.hd 和 List.tl 来完成此任务:
let takeCard fst deck =
fst = List.hd deck
List.tl deck
List.hd
有两个参数,但我不明白为什么。
我认为这里有几个误解。
首先,OCaml 中的大多数类型不可变。除非你使用 mutable variables you can't "remove it from the list", you can only return a version of the list that doesn't have that first item. If you want to return both things you can achieve that using a tuple.
let takeCard deck = (List.hd deck, List.tl deck)
其次,List.hd只取一个元素。 OCaml 利用 currying。当读取 OCaml 类型签名时,第一个参数是函数接收的内容,最后一个参数是函数 returns。所以 List.hd 的签名 'a list -> 'a
意味着它接受一个列表,其中包含('a
用作占位符)和 returns 列表包含的东西类型(在本例中是第一个元素)。
我尝试使用 List.hd 和 List.tl 来完成此任务:
let takeCard fst deck =
fst = List.hd deck
List.tl deck
List.hd
有两个参数,但我不明白为什么。
我认为这里有几个误解。
首先,OCaml 中的大多数类型不可变。除非你使用 mutable variables you can't "remove it from the list", you can only return a version of the list that doesn't have that first item. If you want to return both things you can achieve that using a tuple.
let takeCard deck = (List.hd deck, List.tl deck)
其次,List.hd只取一个元素。 OCaml 利用 currying。当读取 OCaml 类型签名时,第一个参数是函数接收的内容,最后一个参数是函数 returns。所以 List.hd 的签名 'a list -> 'a
意味着它接受一个列表,其中包含('a
用作占位符)和 returns 列表包含的东西类型(在本例中是第一个元素)。