小编Pan*_*877的帖子

如何使它更好?“也许布尔”看起来不太好

首先,我是Haskell的新手,所以如果我问一些愚蠢的问题,请告诉我如何做得更好。谢谢 :)

我的任务是获取符合特定条件的字符串列表。如果没有符合条件的字符串,我想评估为Nothing。所以我写了两个函数:

isSpecialLine :: String -> String -> Maybe Bool
isSpecialLine t s = Just $ (("[" ++ t ++ ":") `isPrefixOf` s) && ("]::" `isSuffixOf` s)

getLinesWith :: String -> String -> Maybe [String]
getLinesWith t = filterM (isSpecialLine t) . lines
Run Code Online (Sandbox Code Playgroud)

这段代码有效,但是我发现这Maybe Bool看起来有点奇怪。嘿,是二进制文件!它始终为Trueor False,因此value isSpecialLine始终为Just Trueor Just False。就Nothing我而言,绝对不可能!

但是,如果我将isSpecialLine输出类型更改为Bool,则会出现以下问题:filterMExpects Maybe Bool而不是Bool

好的,我这样做:

getLinesWith :: String …
Run Code Online (Sandbox Code Playgroud)

monads haskell maybe

3
推荐指数
1
解决办法
76
查看次数

标签 统计

haskell ×1

maybe ×1

monads ×1