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