2016-04-18 35 views
-2

假设我想要构造一个将字符串转换为字符列表的函数。Haskell:如何在递归函数中使用Maybe类型?

一个例子是我们输入ABC,它会输出[a,b,c]

我构建的功能:

tester:: String-> [Char] 
tester []= [] 
tester (x:xs)= case x of 
    a -> a: (tester xs) 
    b -> b: (tester xs) 
    c -> c: (tester xs) 
    otherwise -> [n,o] 

哈斯克尔给出的错误,no不在范围之内。 但no都是字符他们?因此[n,o]是一个[Char],适合输出类型。问题是什么?

我记得在某处读到的字符串只是一个列表Char s,那么String[Char]一样吗?

+1

这与'也许'无关。和不。 'tester'只是你的code_中的一个字符序列,但它不是'String'。你必须使用'''作为字符,例如'['n','o']'或'“no”'。 'a - > ...'也会一直匹配。你想要''a' - > ...'。 – Zeta

+2

看,我喜欢有更多的人进入Haskell,我试图在这里变得温文尔雅,但也许自己学习Haskell不应该是您第一次使用编程语言?也许你可以尝试一个很好的“编程介绍”Coursera课程。 (我听说过很棒的东西) –

+0

最近有些问题的答案是“你必须引用你的角色”。我想知道他们是否有关系,以及这些教程或大学课程在哪里引起混淆。 –

回答

1

您使用的Char类型错误,文字写入'n''o'

您正确的认为String只是[Char]的别名,所以"no"['n','o']的缩写。