作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图通过附加一个数字来查找目录名称,直到找到一个尚不存在的名称:
head <$> filterM (fmap not . fexists_) [ getDatedDir t d n | n <- [0..] ]
go t d 0
where go t d n = do
let dir = getDatedDir t d n
fexists_ dir >>= \case
False -> return dir
True -> go t d (n+1)
最佳答案
有firstM
来自 Control.Monad.Loops
:
firstM :: Monad m => (a -> m Bool) -> [a] -> m (Maybe a)
return the first value from a list, if any, satisfying the given predicate.
关于haskell - 如何使用带有无限列表的 filterM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272933/
我试图通过附加一个数字来查找目录名称,直到找到一个尚不存在的名称: head filterM (fmap not . fexists_) [ getDatedDir t d n | n >= \ca
我目前正在通过在 python 中编写一个 monad 库来自学函数式编程。而且我在类型提示方面遇到了麻烦。例如,Haskell 中有一个带有签名的函数 filterM filterM :: (a -
我对Haskell优化在内部的工作方式不太了解,但我一直在使用过滤器,希望它们可以被优化为等效于C++的简单过滤器。例如 mapM_ print $ filter (\n -> n `mod` 2 =
简而言之:您将如何过滤 Map 的元素? , 或 Set在单子(monad)上 Haskell中的谓词? 我可以想到两种可能的方法: a) 通过列表和 filterM 往返(可能效率不高): filt
我是一名优秀的程序员,十分优秀!