2016-04-18 64 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']的縮寫。