Ana*_*Ana 0 recursion haskell list vector
我有一个如下的数据结构:
import qualified Data.Vector.Unboxed as V
mylist :: [V.Vector (Int, Int)]
Run Code Online (Sandbox Code Playgroud)
我需要搜索这个向量列表来寻找满足谓词的元素.该算法保证我会找到该元素.
到目前为止,我有这样的事情:
go [] = error "Could not find"
go pred (p:ps) =
case V.find pred p of
Just a -> a
Nothing -> go ps
Run Code Online (Sandbox Code Playgroud)
这很简单,但我想摆脱递归.是否有一个构造可以让我"组合"递归?
使用newtype包,可以方便地编写
import Control.Newtype
import Data.Monoid
import Data.Foldable
go :: Foldable f => (a -> Maybe b) -> f a -> Maybe b
go = ala' First foldMap
Run Code Online (Sandbox Code Playgroud)
我认为很好地暴露了你在这个计算中使用的结构.
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |