関数型プログラミング言語Haskell
■ このスレッドは過去ログ倉庫に格納されています
0461デフォルトの名無しさん
NGNGWorldという、コンピュータの全状態を表す型があるとする。
もちろんこの型のオブジェクトは1つしか存在しない。
IO tは「Worldを受け取り、状態を変化させたWorldを返すコマンド」型。
例えば
putChar :: Char -> IO ()
は、「Charを与えると、IOコマンドが返ってくる」関数。
返ってきたコマンドにWorldを与えると、状態が変化したWorldが返る。
main = do
putChar 'a'
putChar 'b'
とすると、mainはIO ()型になる。
システムがこれにWorld型の引数を与えて呼び出す。
ミソは、このインターフェースだとWorld型のデータに直接さわれないこと。
なので、「状態が変化する前のWorld」と「変化したあとのWorld」が
同時に存在して困る、などということが起きない。
■ このスレッドは過去ログ倉庫に格納されています