闇雲に恐れられているIOモナドだが、引数をひとつ取り、IO型の戻値を返す関数のことだと割りきってしまうと、いろいろと面白いことができる。自前のIOモナドの関数を作ると、>>= 演算子で他の標準のIOモナド関数につなげて使うことができるからだ。Unixのパイプライン処理のようなものだ。
たとえば次のような、IOモナドの関数、sortlines を定義してみる。 import List sortlines :: String -> IO String sortlines str = return ( unlines $ sort $ lines str ) そうすると、次のような内容のテキストファイル hello.txt があるとすると、 hello world how are you doing 次のようなプログラムを Hugs 上で実行すると、ファイルの行をソートして表示してくれる。 Main> readFile "hello.txt" >>= sortlines >>= putStr are doing hello how world you また、次のように入力すると、ソートした行をテキストファイルにして保存することもできる。 Main> readFile "hello.txt" >>= sortlines >>= writeFile "newfile.txt" 自前の関数をIOモナドとして定義することで、他のIOモナドの関数との組み合わせが楽になる。そのうえ、自前のIOモナドの作り方は、引数をひとつ取り、IO型の戻値を return 関数で返すだけという簡単さだ。 怖い、怖いIOモナドが、実はまんじゅう怖いの怖いだったのだ。
by tnomura9
| 2010-10-14 17:54
| Haskell
|
Comments(0)
|
カテゴリ
新型コロナウイルス 主インデックス Haskell 記事リスト 圏論記事リスト 考えるということのリスト 考えるということ ラッセルのパラドックス Haskell Prelude Ocaml ボーカロイド 圏論 jQuery デモ HTML Python ツールボックス XAMPP Ruby ubuntu WordPress 脳の話 話のネタ リンク 幸福論 キリスト教 心の話 メモ 電子カルテ Dojo JavaScript C# NetWalker ed と sed HTML Raspberry Pi C 言語 命題論理 以前の記事
最新のトラックバック
最新のコメント
ファン
記事ランキング
ブログジャンル
画像一覧
|
ファン申請 |
||