Haskell 入門


入出力プログラム

Haskell でターミナルから入出力を行うときのプログラムをまとめてみた。

文字列の入力

Prelude で複数行のプログラム入力ができるようにするおまじない。

Prelude> :set +m

1行を端末から入力するための処理。

Prelude> let
Prelude| main = do
Prelude|   cs <- getLine
Prelude|   putStrLn cs
Prelude|
Prelude> main
hello, world
hello, world

複数行を端末から読み込むための処理。

Prelude> let
Prelude| main = do
Prelude|   cs <- getLine
Prelude|   if cs == ""
Prelude|     then return []
Prelude|   else
Prelude|     do
Prelude|       rest <- main
Prelude|       return (cs : rest)
Prelude|
Prelude> main
hello, world
nice to meet you

["hello, world","nice to meet you"]

数値の入力

複数の数値を読み込むための処理。

Prelude> let
Prelude| main = do
Prelude|   cs <- getLine
Prelude|   if cs == ""
Prelude|     then return []
Prelude|   else
Prelude|     do
Prelude|       rest <- main
Prelude|       return ((read cs :: Int) : rest)
Prelude|
Prelude> main
12
34
56

[12,34,56]

コマンドライン引数の入力

端末からコマンドライン引数を読み出す処理。

Prelude> :m System.Environment
Prelude System.Environment> let
Prelude System.Environment| main = do
Prelude System.Environment|   args <- getArgs
Prelude System.Environment|   print args
Prelude System.Environment|
Prelude System.Environment> :main map (*2) [1..10]
["map","(*2)","[1..10]"]