过滤可能,榆树
Filter on Maybe, elm
我有一个 List (Maybe a)
,我想过滤掉 Nothing
的实例。我大概已经做到了,但对我需要的代码量不满意:
removeNothingFromList : List (Maybe a) -> List a
removeNothingFromList list =
List.foldr
(\cur list ->
case cur of
Just val ->
val :: list
Nothing ->
list
)
[]
list
在 js 中,模拟仅由 const removeNothingFromList = (list) => list.filter(item => item)
完成,我希望只是我的经验不足导致我无法看到相对简洁的解决方案。
此外,是否通常有一种方法来检查类型(强制转换为布尔值),或者通常对类型进行过滤?
elm-community/maybe-extra
package exposes a function called Maybe.Extra.values
正是您要找的。
您可以使用 Elm Fancy Search 工具搜索所有 public 包。搜索 List (Maybe a) -> List a
的类型签名将显示我提到的包。
你的目标可以通过核心包的两个元素的组合来实现:
removeNothingFromList : List (Maybe a) -> List a
removeNothingFromList list =
List.filterMap identity list
我有一个 List (Maybe a)
,我想过滤掉 Nothing
的实例。我大概已经做到了,但对我需要的代码量不满意:
removeNothingFromList : List (Maybe a) -> List a
removeNothingFromList list =
List.foldr
(\cur list ->
case cur of
Just val ->
val :: list
Nothing ->
list
)
[]
list
在 js 中,模拟仅由 const removeNothingFromList = (list) => list.filter(item => item)
完成,我希望只是我的经验不足导致我无法看到相对简洁的解决方案。
此外,是否通常有一种方法来检查类型(强制转换为布尔值),或者通常对类型进行过滤?
elm-community/maybe-extra
package exposes a function called Maybe.Extra.values
正是您要找的。
您可以使用 Elm Fancy Search 工具搜索所有 public 包。搜索 List (Maybe a) -> List a
的类型签名将显示我提到的包。
你的目标可以通过核心包的两个元素的组合来实现:
removeNothingFromList : List (Maybe a) -> List a
removeNothingFromList list =
List.filterMap identity list