作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经定义了一个数据类型 RuleFile
我编写了一个函数来检查 Rulefile
有许多谓词,随着它的进行积累警告字符串。
rfWarnings :: RuleFile -> [String]
rfWarnings rf = let warnings = [((\rf -> length (neigh rf) > 3), "warning: unknown extra information in the neighborhood, discarding it and moving on"),
<more warnings> ]
in <process> warnings
<process>
是否有现成的haskell 函数? ?或者也许我没有以惯用的haskell方式考虑这个问题,还有其他一些推荐的方法?我正在使用
Control.Monad.Except
对于错误,但我目前的想法是我想单独处理警告并在 stderr 上输出消息。
main :: IO ()
main = do
<some stuff>
ruleFiles <- <produce them>
mapM (hPutStr stderr) (map rfWarnings ruleFiles)
<other stuff>
最佳答案
您可以使用 Writer
为了这:
import Control.Monad.Writer
rfWarnings rf = execWriter $ do
unless (length (neigh rf) <= 3) $ tell "Too much neigh!"
unless (isFrobulastic rf) $ tell "Frobulation mismatch!"
rfWarnings
从较小的部分,例如
rfWarnings rf = execWriter $ do
unless (looksOK rf) $ tell "Completely b0rken!"
mapM_ partWarning (parts rf)
unless
比
when
因为我认为描述正确的状态比描述不正确的状态更好。
关于haskell - 在我自己实现之前寻找一个标准的 Haskell 习语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31104667/
场景如下: 我将我的应用程序运行所需的几个 .xml(某种配置)文件捆绑在一个 .jar 文件中。 jar 文件具有以下结构: settings-1.0.0.jar ˪ resources/ ˪
我是一名优秀的程序员,十分优秀!