我认为我不允许使用任何非标准库。
我曾经尝试过像制表符和空格这样的缩进,但是我是Haskell的新手,所以很可能我错过了一些东西。
subset :: (Eq a) => [a] -> [a] -> Bool
subset [] ys = True
subset (x:xs) ys
elem x ys = subset xs ys
let otherwise = False
complement :: (Eq a) => [a] -> [a] -> Maybe [a]
complement [] ys = Just ys
complement xs ys
subset xs ys = Just (filter (not.(`elem`xs))ys)
otherwise = Nothing
输入数据([1,2,3] [1..5])=刚[4,5]的预期结果
答案 0 :(得分:1)
似乎您正在尝试编写模式保护程序,但忽略了|
。试试:
complement :: (Eq a) => [a] -> [a] -> Maybe [a]
complement [] ys = Just ys
complement xs ys
| subset xs ys = Just (filter (not.(`elem`xs))ys)
| otherwise = Nothing
subset
中存在类似的问题。还有其他一些缩进问题,尽管可能是粘贴到SO中引入的。