OCaml的選項類型在有可能不會返回任何東西的函數的情況下非常有用。但是當我在很多地方使用這種方法時,我發現在match ... with
中始終處理Some
和None
的情況非常麻煩。有沒有其他方法可以解構OCaml中的選項類型?
例如,
let env2 = List.map (fun ((it,ie),v,t) ->
match t with
| Some t -> (v,t)
| None ->
begin
match it with
| Some it -> (v,it)
| None -> failwith "Cannot infer local vars"
end) ls_res in
是否有任何其他的方式來解構以簡潔的方式選項類型?
+1我也被告知編譯器對這個構造很好,但有一天我看了一下程序集(我可以看看lambda代碼,但是我已經知道一個彙編語言,所以對我來說實際上工作量較少),我很失望。令人印象深刻的優化在於看起來像被遺忘的明顯情況。在這種情況下,兩個調用'caml_alloc2'不應該在那裏(但是):http://pastebin.com/EfFsxhCQ – 2013-02-20 20:44:19
這是一個拖動,但我仍然喜歡簡單情況下這種匹配的清晰度。 – 2013-02-20 21:08:19
謝謝!這是最簡潔和可讀的答案。 – 2013-02-21 04:59:32