例:["a"、 "b"、 "c"] の文字列を ex: abc "Haskell - Charの配列を単一の文字列に変換するには
私が試したことはうまくいかず、パターンの解析エラーが返されます。 これは私のコードです:任意の助け
listToString :: [Char] -> String
listToString [] = ""
listToString x:xs = x ++ listToString xs
ありがとう!
例:["a"、 "b"、 "c"] の文字列を ex: abc "Haskell - Charの配列を単一の文字列に変換するには
私が試したことはうまくいかず、パターンの解析エラーが返されます。 これは私のコードです:任意の助け
listToString :: [Char] -> String
listToString [] = ""
listToString x:xs = x ++ listToString xs
ありがとう!
ハスケルでString
は[Char]
であるため、変換する必要はありません。 (インポートする必要はありません)Prelude
からあなたに自動的に使用可能である
type String = [Char]
:
GHC.Baseは、このように定義しています。例えば
:ATC正しく述べたように
['1','2','3','4'] == "1234"
、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
'String'は' [Char] 'の型名です。変換は必要ありません。 'listToString = id' – 4castle
技術的には、 'x:xs'は、' listToString(x:xs)= ... 'のように括弧の中に入れなければならない合成パターンです。さらに、この方程式の右辺では、単一の 'Char'と' String'を連結しようとします。 'listToString'が実際には文字列に対して定義された' id'の速度が遅いということは言及していません。 – bipll
希望の場合はIDを使用することができます – Carbon