gpt4 book ai didi

algorithm - 在 Elm 中将 List (Maybe a) 转换为 Maybe (List a)

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:52:45 27 4
gpt4 key购买 nike

在 Elm 中,将 List (Maybe a) 转换为 Maybe (List a) 的好方法是什么?

逻辑很简单:

  • 如果所有项都是Just a,则返回Just (List a)
  • 否则,返回Nothing
Example 1:

input: [ Just 1, Just 2, Just 3 ]
output: Just [ 1, 2, 3 ]

Example 2:

input: [ Just 1, Nothing, Just 3 ]
output: Nothing

可以通过一些内置函数轻松完成吗?

我想到的最好的是这样的:

listOfMaybesToMaybeList : List (Maybe a) -> Maybe (List a)
listOfMaybesToMaybeList listOfMaybes =
List.foldl
(\maybeItem ->
\maybeResultList ->
case ( maybeItem, maybeResultList ) of
( Just item, Just resultList ) ->
Just (List.append resultList [ item ])

( _, _ ) ->
Nothing
)
(Just [])
listOfMaybes

这种函数的合适名称是什么?当我在寻找答案时,我看到 Haskell 中有一个名为 sequence 的函数,它似乎在做类似的事情。

最佳答案

您可以使用 Elm Fancy Search 工具并搜索函数签名:List (Maybe a) -> Maybe (List a)

第一个结果出现Maybe.Extra.combine

关于algorithm - 在 Elm 中将 List (Maybe a) 转换为 Maybe (List a),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53032040/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com