2017-05-04 8 views
0

例:["a"、 "b"、 "c"] の文字列を ex: abc "Haskell - Charの配列を単一の文字列に変換するには

私が試したことはうまくいかず、パターンの解析エラーが返されます。 これは私のコードです:任意の助け

listToString :: [Char] -> String 
listToString [] = "" 
listToString x:xs = x ++ listToString xs 

ありがとう!

+3

'String'は' [Char] 'の型名です。変換は必要ありません。 'listToString = id' – 4castle

+0

技術的には、 'x:xs'は、' listToString(x:xs)= ... 'のように括弧の中に入れなければならない合成パターンです。さらに、この方程式の右辺では、単一の 'Char'と' String'を連結しようとします。 'listToString'が実際には文字列に対して定義された' id'の速度が遅いということは言及していません。 – bipll

+0

希望の場合はIDを使用することができます – Carbon

答えて

0

ハスケルでString[Char]であるため、変換する必要はありません。 (インポートする必要はありません)Preludeからあなたに自動的に使用可能である

type String = [Char] 

GHC.Baseは、このように定義しています。例えば

:ATC正しく述べたように

['1','2','3','4'] == "1234" 
0

String[Char]["a", "b", "c"]のタイプは[String]と同じである、[[Char]]である理由です

のためだけの同義語です。

ですから、concatと文字列のリストを変換することができます:

"abc" 

concat ["a", "b", "c"] 

結果あなたはこのように定義された文字数のリスト、持っている場合:

['a', 'b', 'c'] :: [Char] -- (single quotes: Char, double quotes: String) 

を変換する必要はありません。これは

と同じです
"abc" :: String 
関連する問題