【问题标题】:OCaml: How can I return the first element of a list and after that remove it from the list?OCaml:如何返回列表的第一个元素,然后将其从列表中删除?
【发布时间】:2016-05-07 02:55:34
【问题描述】:

我尝试使用 List.hdList.tl 来完成这项任务:

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

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

【问题讨论】:

  • 请查看URL,它将有助于提高您的内容质量
  • fst = List.hd deckfstdeck 的第一个元素进行比较,并忽略结果。

标签: list functional-programming ocaml tail


【解决方案1】:

我认为这里有几个误解。

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

let takeCard deck = (List.hd deck, List.tl deck)

其次,List.hd 只需要一个元素。 OCaml 利用currying。读取 OCaml 类型签名时,第一个参数是函数接收的内容,最后一个参数是函数返回的内容。所以 List.hd 的签名 'a list -> 'a 意味着它接受一个包含('a 用作占位符)的列表并返回列表包含的东西类型(在这种情况下是第一个元素)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 2021-07-10
    • 2013-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多