【发布时间】:2014-11-27 06:28:37
【问题描述】:
所以我有一个stmt(代数类型)的列表,其中包含许多VarDecl。
我想将列表从stmt list 减少到VarDecl list。
当我使用List.filter 时,我可以消除所有其他类型,但我仍然留下stmt list。
我发现我可以通过折叠进行过滤和类型更改,但我不知道如何概括它(我在项目中的很多地方都需要这种模式)。
let decls = List.fold_left
(fun lst st -> match st with
| VarDecl(vd) -> vd :: lst
| _ -> lst
) [] stmts in
有没有更好的方法来执行过滤并转换为列表类型的变体?
【问题讨论】:
标签: ocaml