列表中最新的非Nothing值

我最近开始学习 Haskell,希望你能帮助解决一个列表转换问题。

我有一个自定义数据类型的 Maybe 列表,在这个论坛中简化为字符串,我想将它转换为用最近看到的值替换 Nothing 值。见下文:

Input: [Nothing, Just "Hello", Nothing, Nothing, Just "World", Nothing]
Output: [Nothing, Just "Hello", Just "Hello", Just "Hello", Just "World", Just "World"]

这在 Haskell 中可能吗?任何指针将不胜感激。

回答

这是一个非常简洁和优雅的实现方式:

import Control.Applicative

f = scanl1 (flip (<|>))

执行f [w,x,y,z]yields [w, x <|> w, y <|> x <|> w, z <|> y <|> x <|> w],并将Maybes 与 s链接<|>给你第一个是Just,或者Nothing如果它们都是Nothing.


以上是列表中最新的非Nothing值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>