我尝试使用 List.hd 和 List.tl 执行此任务:
<video class="question-video" preload="none">
<source src="path/to/video/video.mp4" type="video/mp4">
</video>
let takeCard fst deck =
fst = List.hd deck
List.tl deck
有两个参数,但我不明白为什么。
答案 0 :(得分:1)
我认为这里存在一些误解。
首先,OCaml中的大多数类型都是不可变的。除非您使用mutable变量,否则无法“将其从列表中删除”,您只能返回没有该第一项的列表版本。如果你想要返回两件事,你可以使用tuple来实现这一点。
let takeCard deck = (List.hd deck, List.tl deck)
其次,List.hd只占用一个元素。 OCaml利用currying。当读取OCaml类型签名时,第一个参数是函数所接收的参数,最后一个参数是函数返回的参数。所以List.hd的签名'a list -> 'a
意味着它包含一个包含('a
用作占位符)的列表并返回列表包含的东西类型(在这种情况下是第一个元素)