在Ocaml中,我有以下功能:
let f = fun [x] -> x因此,我收到以下警告:
this pattern-matching is not exhaustive.
Here is an example of a value that is not matched:
[]我的目标是从'a list -> 'a创建一个函数。如何解释如何将[]传递给该函数?
发布于 2013-08-31 17:36:35
当列表中有其他元素时,您只需决定您的函数应该做什么。jambono演示了如何使函数在所有这些情况下都失败。另一个相当合理的函数总是返回列表的第一个元素,只有当列表为空时才会失败。这个函数被称为List.hd。
let f = List.hd或者你也可以自己实现:
let f = function
| [] -> failwith "empty list"
| x :: _ -> x发布于 2013-08-31 17:12:54
你必须涵盖所有可能的案件。除了[x]之外,还可以有一个空列表和一个包含多个元素的列表:
let f = function
|[x] -> x
| _ -> failwith "bad entry";;_是通配符模式,如果[x]不匹配,则匹配所有可能的值。
https://stackoverflow.com/questions/18550616
复制相似问题