Haskell:
文字列の連結

How to: (方法)

Haskellで文字列を連結するのはシンプルです。標準的な方法は(++)オペレータを使用することです。以下はその例です:

main :: IO ()
main = do
  let hello = "こんにちは、"
  let world = "世界!"
  putStrLn (hello ++ world)

出力は次のようになります:

こんにちは、世界!

他の方法として、concat関数やリスト内包表記を利用することもできます。

main :: IO ()
main = do
  let phrases = ["Haskell ", "は ", "素晴らしい ", "です!"]
  putStrLn (concat phrases)

  let part1 = "Haskell"
  let part2 = "まじ"
  putStrLn ([part1, part2, "?"] >>= id)

出力:

Haskell は 素晴らしい です!
Haskellまじ?

Deep Dive (深掘り)

Haskellの文字列は、単に文字のリストとして表されます。そのため、リストを連結する過程と同様です。例えば、(++)オペレータは、背後では1つ目のリストの末尾に到達するまで再帰的に処理を行います。

過去、文字列を効率的に扱うため、Data.Text モジュールが導入されました。このモジュールでは、より効率的な文字列操作が可能ですが、上記の例では標準の文字列型を使用しています。

代わりに Data.Text を使用すると、メモリ効率とパフォーマンスが向上しますが、プログラムのサイズが大きくなる場合があります。

import qualified Data.Text as T

main :: IO ()
main = do
  let hello = T.pack "こんにちは、"
  let world = T.pack "世界!"
  T.putStrLn (T.append hello world)

Data.Textは日常的には (++) の代わりに append 関数を提供します。

See Also (関連情報)