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

関数: 簡易的なIO

はじめに

そろそろ現実世界とやりとりしたいよね。IOモナドを学ぶまえに簡易的な入出力のやりかたを見る。

すべてのプログラムはフィルタである

「UNIXという考え方」で「すべてのプログラムはフィルタである」とある。「フィルタ」とは入力を変換して出力するものという意味だ。ファイルのフォーマットを変換するプログラムなどはわかりやすくフィルタである。ゲームなどはフィルタっぽくない。しかし、これも「時間」と「ユーザの入力」の組の並びという入力値を変換して「画面」の並びとして出力するプログラムと考えればフィルタだ。

すべてのプログラムはフィルタである。しかし、最もフィルタっぽいプログラムは標準入力からの入力を変換して標準出力に出力するプログラムだ。

String -> String

文字列を文字列に変換する関数がある。これがあればフィルタを作成するには十分だ。String -> String型の関数をフィルタに変換したい。

あるよ

String -> String型の関数をフィルタに変換する関数がある。

interact :: (String -> String) -> IO ()

IO ()という見なれない型が出てきた。入出力できる機械を表す値の型と考えておく。interactは文字列変換関数をとって機械を返す関数だ。

% ghci
Prelude> :t interact
(String -> String) -> IO ()
Prelude> :t interact id
IO ()

まとめ

関数interactは「文字列を変換する関数」を「フィルタの動作を行う機械」に変換する関数だ。

「構文: deriving Read」へもどる 「機能: main」へ

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