如何使用Haskell计算字符串中元音和辅音的数量?

时间:2016-12-12 14:14:56

标签: haskell

我开始研究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

然而它不起作用。这段代码有什么问题?

1 个答案:

答案 0 :(得分:1)

一个问题是,您的countVC定义目前不会像其签名所暗示的那样采用[Char]参数。将其更改为:

countVC txt = countVCAux txt 0 0

第一个countVCAux模式也不是很正确。应该省略txt以支持空字符串[],并且您需要添加convow参数:

countVCAux [] con vow  = (con, vow)