0
我遇到了模式匹配变长度和类型的元组。匹配不同长度和类型的元组(ocaml)
let test = ((6, 10), (3, "1", 9), ([2; "5"], 4, 7, "8"));;
let rec extract_min_int arg =
match arg with
| (a, b, c) ->
min (extract_lowest_int a) (min (extract_lowest_int b) (extract_lowest_int c))
| (a, b) -> min (extract_lowest_int a) (extract_lowest_int b)
| `int i -> i
| _ -> infinity
;;
extract_min_int test;;
我期待这个函数调用返回2,但我得到了下面的错误,而不是:
错误:此模式相匹配的类型“A *”的b值,但预期的模式相匹配的值类型'c *'d *'e
我对ocaml相当陌生。这个错误正在否定我正在尝试做什么,它与不同长度/类型的元组匹配。
我还有什么其他选择来完成此任务?
嗯,你为什么要创建一个像这样的数据混乱?顺便说一下'let test ='中有一个错字。而你无法匹配它,因为它没有结构(看起来像那样) – 2015-04-02 20:26:42