【发布时间】:2013-01-16 17:24:47
【问题描述】:
在 OCaml 中
let nth_diff_type i (x, y, z) =
match i with
1 -> x
|2 -> y
|3 -> z
|_ -> raise (Invalid_argument "nth")
所以当前的类型是int->('a,'a,'a)->'a,对吧?
这意味着 x、y、z 必须具有相同的类型。
所以我的问题是是否可以给它最大的多态性,这样x、y、z就不需要有相同的类型了?
【问题讨论】:
-
在 Haskell 中应该是:
Num a => a -> (b,b,b) -> bFWIW,因为文字是多态的。 -
对不起,我要 OCaml,编辑了我的问题
-
就目前而言,这是不可能的:在 OCaml 中,一个函数不能同时返回不同类型的值。
标签: functional-programming ocaml