我开始研究Haskell,我完全迷失了。这个练习要求我用字符串计算元音和辅音的数量,然后打印这两个数字。
这是我到目前为止的代码:
--Here I take the string and will
--return a tuple with both values
countVC::[Char]->(Int, Int)
--I call an aux function where I pass the string
--and two values, which I will use to increment
--according to the amount of vowels or consonants
countVC = countVCAux txt 0 0
countVCAux::[Char]->Int->Int->(Int, Int)
--If the string is empty I try to return the tuple with (0, 0)
countVCAux [] con vow = (con, vow)
--If not I take the head and compare with the consonants
countVCAux (c:r) con vow
--If it's a vowel I pass the rest of the list, the consonant and increment the vowel count
|c=='a' || c=='e' || c=='i' || c=='o' || c=='u' = countVCAux r con (vow + 1)
--Else I do the same, but increment the consonant count
|otherwise = countVCAux r (con + 1) vow
然而它不起作用。这段代码有什么问题?
答案 0 :(得分:1)
一个问题是,您的countVC
定义目前不会像其签名所暗示的那样采用[Char]
参数。将其更改为:
countVC txt = countVCAux txt 0 0
第一个countVCAux
模式也不是很正确。应该省略txt
以支持空字符串[]
,并且您需要添加con
和vow
参数:
countVCAux [] con vow = (con, vow)