【发布时间】:2015-09-18 10:12:17
【问题描述】:
我有一个字符串和一个字符串列表 lst,如果 lst 不包含给定的字符串,或者只是 list' where list' 与 lst 相同,我不应该返回任何内容,除了给定字符串的第一个出现的被删除。
allExcept :: [Char] -> [[Char]] -> Maybe [[Char]]
allExcept ch1 chars
| ch1 `notElem` chars = Nothing
allExcept ch [] = []
allExcept ch (x:xs)
| ch /= x = Just(x:(fromJust(allExcept ch xs)))
| otherwise = Just(xs)
我的代码的结果是: 不在范围内:`fromMaybe'
【问题讨论】:
-
使用
String类型别名而不是[Char]。我也怀疑第二个模式匹配是多余的。 -
请注意
fromMaybe很好,但fromJust是危险的,因为它是部分的:如果它曾经应用于Nothing,它会导致您的程序崩溃。