检查字符串中的所有元音是否都是大写字母的函数

时间:2017-05-06 15:10:25

标签: haskell

Check::String->Bool
Check = undefined

我只能使用列表解析,我只能使用基本函数和库函数。有人可以帮帮我吗?我知道只能这样做,就像这样:

charfound::Char->String->Bool
charFound c(x:xs) | c==x=True
                  |otherwise=charFoundc XS

1 个答案:

答案 0 :(得分:4)

您可以使用notElemall,如下所示:

check :: String -> Bool
check = all (\e -> e `notElem` ['a', 'e', 'i', 'o', 'u'])     

以下是解释:

  • (\e -> e notElem ['a', 'e', 'i', 'o', 'u'])是一个接受e的函数,并返回它是否不是小写元音的元素。

  • all需要一个。将元素转换为布尔值的谓词,以及b。这些元素的数组,并返回谓词对于数组的所有元素是否为真。

另一件可能有用的事情是注意这是使用point-free notation编写的,但它相当于

check s = all (\e -> e `notElem` ['a', 'e', 'i', 'o', 'u']) s