问题描述
type User
= Admin ComplicatedAdminRecord
. . .
| normalUser ComplicatedUserRecord
我正在寻找一种通用方法来将 List User
过滤到联合组件类型的(可能是空的)List
中。
我所拥有的有效,但它很糟糕,而且 copypasta 代码的数量与我尝试过滤的类型数量呈线性关系。它看起来像这样:
asMaybeAdmin : User -> Maybe ComplicatedAdminRecord
asMaybeAdmin user =
case user of
Admin adminUser ->
Just adminUser
_ ->
nothing
onlyAdmins =
List.filterMap asMaybeAdmin users
如果您只尝试过滤一种类型,这很好,但是必须为每个组件类型编写一个新的 asMaybe<Type>
是很多重复,我觉得我应该能够写一般。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)