最佳答案
从一个选项列表到一个只包含 Some 元素的列表,我出乎意料地遇到了一点麻烦。
我最初的尝试是:
let ga = List.filter (fun xx ->
match xx with
| Some(g) -> true
| None -> false) gao
当然,这个结果类型仍然是一个选项列表。我不知道如何使用 List.map 来浓缩它,因为您必须在 match 语句中处理所有情况。我有一个丑陋的解决方案,但我想知道是否有更好的东西。
丑陋:
let rec gOptRemove gdec gacc =
match gdec with
| head :: tail ->
match head with
| Some(a) -> gOptRemove tail (a :: gacc)
| None -> gOptRemove tail gacc
| [] -> gacc
我更愿意找到一个非递归的解决方案,或者找到这种事情的标准方法。