I/O アクションの中で let 使う
let はI/Oアクションの中で普通の値に名前を与えたいときに使う。
import Data.Char main = do putStrLn "Hello, what's your first name?" firstName <- getLine putStrLn "What's your last name?" lastName <- getLine let bigFirstName = map toUpper firstName bigLastName = map toUpper lastName putStrLn $ "Hey " ++ bigFirstName ++ " " ++ bigLastName ++ ", how are you?"
実行
*Main> main Hello, what's your first name? john What's your last name? mayer Hey JOHN MAYER, how are you?
<-
は I/Oアクションの結果に名前を束縛したい時に使うlet
は 純粋な式に名前を束縛したい時に使う
逆順に表示
入力された単語を逆さまにして表示するプログラムを作る
main = do line <- getLine if null line then return () else do putStrLn $ reverseWords line main reverseWords :: String -> String reverseWords = unwords . map reverse . words
ビルドする
> stack ghc -- --make reverse.hs [1 of 1] Compiling Main ( reverse.hs, reverse.o ) Linking reverse ...
実行する
> ./reverse 123456 654321 252525252525 525252525252 reverse esrever
- 入力に対して
words
を適用、単語のリストを作る - 単語のリストに対して
reverse
を適用 unwords
でリストを文字列に戻す
Haskell の return
は、純粋な値から I/O アクションを作り出すために利用される。
return
はプログラムを中断し結果を返すのではなく、値を受け取り箱の中に入れるもの。
所感
インタラクティブなプログラムが動いて感動している。

- 作者: MiranLipovaca
- 出版社/メーカー: オーム社
- 発売日: 2017/07/14
- メディア: Kindle版
- 購入: 4人 クリック: 9回
- この商品を含むブログを見る