top page > computer > haskell > web_lecture > for_programmer > about_io.html
更新日:
文責: 重城良国

入出力について

(工事中 60%)

ほかの言語では

Haskell以外の多くの言語では関数が「評価」されるタイミングで入出力を行い関数の返り値として入力を返す。

評価のタイミングで入出力を行うと評価の順番がコードの意味に影響を与える。本来であればコードの意味は評価の結果のみに依存するべきだ。

入力を関数の返り値として返すと「同じ引数に対してはつねに同じ返り値を返す」という参照透過性が壊される。

機械

式の評価と入出力を切り離す。式の評価によって「入出力を行う機械」が返るようにする。その機械は評価とは別の仕組みによって「実行」される。「実行」は対話環境での評価のあとに行われる。またスタンドアロンなコードにおいてはmainを束縛した機械が実行される。

機械型は数値型や文字型のように「基本的な型」として用意されている。

まとめ

関数型言語としての純粋さを保ちつつ入出力を行いたい。Haskellでは「評価」と「実行」とをわけている。式は入出力を行う「機械」にまで評価されて、そのあと別の機構によって実行される。

「モナド: まとめ」へもどる 「Machine型」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics