我需要编写一个函数,该函数返回相对于U(用户也输入的通用集)的A(提供)的称赞

时间:2019-04-10 15:24:11

标签: haskell

我认为我不允许使用任何非标准库。

我曾经尝试过像制表符和空格这样的缩进,但是我是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]的预期结果

1 个答案:

答案 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中引入的。