我有這個列表的組合:list + undefined list
我寫這個函數來從那裏返回元素的位置。函數將從位置轉換爲元素
let name_of_num list undefined_list len_undefined k =
if k < len_undefined then List.nth undefined_list k else
List.nth list (k - len_undefined)
val name_of_num : 'a list -> 'a list -> int -> int -> 'a
但我的問題是,當我適用於我的功能列表有不同的類型從未定義的列表。所以這個函數不能通過編譯器。 undefined是一個字符串列表。
let len_undefined xsds = List.length (undefined xsds)
let xsds_of_int xsds =
List.map (List.map (name_of_num xsds undefined (len_undefined xsds)))
xsds
在我的節目類型xsds
。如果我換成undefined
到xsds
這樣的功能:
let xsds_of_int xsds =
List.map (List.map (name_of_num xsds xsds (len_undefined xsds)))
它的工作原理。如何在k < len_undefined
時寫第二個條件?
let name_of_num list len_undefined k =
if k < len_undefined then ??? else
List.nth list (k - len_undefined)
謝謝。
如果它永遠不會進入未定義列表?這種情況下可以有這個功能嗎? – Quyen 2012-02-20 03:02:52
如果你的函數* always *從'list'返回一個元素,而永遠不會從'undefined_list'返回,那麼這個列表可以有兩種不同的類型,並且這個函數仍然可以很好的形成。但是這對我來說沒有多大意義。另外,編譯器必須能夠靜態地指出「undefined_list」從不使用。 – 2012-02-20 03:09:18
'type any = A的Xsd.xsd | B的字符串' 'let name_of_num(xsds:'A list)(undefined:'B list)len_undefined k = if k
Quyen
2012-02-20 04:03:36