Haskell 不在范围内:`fromMaybe';-哈斯克尔

Haskell 不在范围内:`fromMaybe';-哈斯克尔,haskell,maybe,Haskell,Maybe,我有一个字符串和一个列表lst of string,如果lst不包含给定的字符串,或者列表'where list'与lst相同,则我不应返回任何内容,除非给定字符串的第一个出现处已删除 allExcept :: [Char] -> [[Char]] -> Maybe [[Char]] allExcept ch1 chars | ch1 `notElem` chars = Nothing allExcept ch [] = [] allExcept ch (x

我有一个字符串和一个列表lst of string,如果lst不包含给定的字符串,或者列表'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'

您需要导入数据。Maybe模块:

import Data.Maybe

使用
字符串
类型别名而不是
[Char]
。另外,我怀疑第二个模式匹配是多余的。请注意,
fromMaybe
可以,但是
fromJust
是危险的,因为它是部分的:如果应用于
Nothing
,它将使程序崩溃。