今日はHaskellで乱数を出力してみようと思う。Haskellの公式サイトのThe global random number generatorの例をそのまま使う。
import System.Random
rollDice :: IO Int
rollDice = getStdRandom(randomR(1, 6))
昨日は関数を定義したが、このrollDiceの定義は一体何なのだろうか。IO Intを返すことの意味が良くわからない。
Intを文字列に変換するのはshowでできることがわかっている。しかし、この関数の返り値は、そのままでは文字列にすることはできないようだ。
ここではじめて2行あるmainを欠くことになった。<-はHaskellで束縛と呼ぶらしく、これでIO Intを普通のIntにすることができる。
import System.Random
rollDice :: IO Int
rollDice = getStdRandom(randomR(1, 6))
main = do
rand <- rollDice
putStrLn(show rand)
調べてみると、この例は以下のように書けることがわかった。>>=とはおまじないだ。しかし、printではない関数を使うことはできない模様。うむむ。
import System.Random
rollDice :: IO Int
rollDice = getStdRandom(randomR(1, 6))
main = rollDice >>= print
以下のQ & Aを見ると、>>=オペレータも束縛であるそうだ。純粋関数やIOモナドというHaskell特有の単語が散らばっており、今の時点で理解するのは難しい。
いまいちな内容になってしまったが、今日はここまで。
