0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Haskellで出力を処理する(基礎編)

Last updated at Posted at 2025-11-16

これは何?

本アドベントカレンダーの5日目の記事です。

よくある出力をまとめたものです。

注意

getLineを使う方法で使用することを前提にしています。
2025年11月11日現在、自分は別記事で記載予定のinteractを使う方法を採用しています。

interactを使う場合はIO部分をinteractにおまかせできるため、本記事で紹介するようなprintputStrLnputStrの使い分けをする必要がなくなります。


文字列

  • putStrLnを使う。
  • printでもデバック目的での出力はできるが、""がつくことに注意。

1つの変数

main :: IO ()
main = do
  let word = "Hello, World!"
  putStrLn word
Hello, World!

複数の変数をスペース区切りで出力する

  • ++で文字列を連結する方法
main :: IO ()
main = do
  let name1 = "Bob"
  let name2 = "Alice"
  putStrLn $ name1 ++ " " ++ name2
  • 一度配列にして、unwordsを使ってスペース区切り文字列に戻す方法
main :: IO ()
main = do
  let name1 = "Bob"
  let name2 = "Alice"
  putStrLn $ unwords [name1, name2]

数値

1つの数値

main :: IO ()
main = do
  let n = 1
  print 1
1

1次元配列をスペース区切りで出力する

map showで配列の中身を全て文字列にしてからunwordsでスペース区切りに展開する。

main :: IO ()
main = do
  let xs = [1, 2, 3]
  putStrLn $ unwords $ map show xs
1 2 3

1次元配列を改行区切りで出力する

putStrLnではなく、putStrを使わないとunlinesによる改行とputStrLnの両方の改行が出力されてしまう点に注意。

main :: IO ()
main = do
  let xs = [1, 2, 3]
  putStr $ unlines $ map show xs
1
2
3

2次元配列の出力

  • mapM_を使って複数回putStrLnを呼び出す方法
main :: IO ()
main = do
  let array_2d = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  mapM_ (putStrLn . unwords . map show) array_2d
  • unlinesunwordsを組み合わせる方法
main :: IO ()
main = do
  let array_2d = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
  putStr $ (unlines . map (unwords . map show)) array_2d
1 2 3
4 5 6
7 8 9
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?