Bool justWithA [] = True justWithA (x:xs) | -6ren">
gpt4 book ai didi

function - 有没有办法定义一个单词是否只有 "a"元音?

转载 作者:行者123 更新时间:2023-12-02 18:18:16 28 4
gpt4 key购买 nike

我试图在 haskell 上创建一个函数,我知道该函数的定义如下:

justWithA : [Char] -> Bool
justWithA [] = True
justWithA (x:xs) | (x == "a") = x + justWithA xs
| else (x == "e") = False
| else (x == "i") = False
| else (x == "o") = False
| else (x == "u") = False

我认为有更好的方法来定义这个函数,只是不知道正确的方法......

最佳答案

当前的实现存在一些问题:

  • 守卫不使用 else 关键字;
  • xChar,因此您与 x == 'a' 进行比较,而不是 x == “一”
  • x + justWithA xs 没有任何意义,因为 xChar 并且您不能添加 CharBool 在一起;和
  • 如果字符串包含辅音,您的函数将会出错,因为这些辅音没有被任何保护覆盖。

您可以使用以下方法修复该功能:

justWithA : String -> Bool
justWithA [] = True
justWithA (x:xs)
| x == <strong>'a'</strong> = <strong>justWithA xs</strong>
| x == <strong>'e'</strong> = False
| x == <strong>'i'</strong> = False
| x == <strong>'o'</strong> = False
| x == <strong>'u'</strong> = False
| <strong>otherwise = justWithA xs</strong>

我们在这里只查找元音,如果有元音是 eiou,然后我们返回False

我们可以将其简化为:

justWithA :: String -> Bool
justWithA = all <strong>(`notElem` "eiou")</strong>

或者如果您也想考虑大写:

justWithA :: String -> Bool
justWithA = all <strong>(`notElem` "eiouEIOU")</strong>

关于function - 有没有办法定义一个单词是否只有 "a"元音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71228692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com