これは何?
本アドベントカレンダーの5日目の記事です。
よくある出力をまとめたものです。
注意
getLineを使う方法で使用することを前提にしています。
2025年11月11日現在、自分は別記事で記載予定のinteractを使う方法を採用しています。
interactを使う場合はIO部分をinteractにおまかせできるため、本記事で紹介するようなprint、putStrLn、putStrの使い分けをする必要がなくなります。
文字列
-
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
-
unlinesとunwordsを組み合わせる方法
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