タグ

ブックマーク / tanakh.hatenablog.com (4)

  • 数当てゲーム in Haskell - 純粋関数型雑記帳

    純粋関数型言語を使う上でもっとも問題となるのはやはりIOだろう。 現在用いられている方法はおおよそ3つある。 ストリーム モナド 一意性型付け Haskellは主にモナドを使うわけであるが、 入出力が文字列に限定される場合はinteract*1で 簡単にモナド→ストリームの変換ができる。 そこで、コンソールアプリ習作の大定番、 数当てゲームをHaskellで実装してみた。 (実装してみたというか、ちょっと前に作ったネタだけど) ストリームIOである。 見てもらえば分かると思うが、むちゃくちゃ簡潔。 数当てゲームというものが見事に"記述"できている のが分かると思う。 今まで触った言語の中でもきわめて短い部類にはいるのではなかろうか。 module Main(main) where import Random main = do ans <- randomRIO (1,100) intera

    数当てゲーム in Haskell - 純粋関数型雑記帳
    kesnke
    kesnke 2011/04/09
    Haskellによる簡潔な数当てゲーム
  • Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳

    最近ちょっと気になるiterateeを勉強したので、日語の解説を書いてみます。と言いつつ、大部分が The Monad.Reader Issue 16 *1 からの引用です。 はじめに Iterateeと呼ばれる新たなI/Oの抽象化手法が、最近にわかに広まりつつあります。既存のI/Oが抱える問題を解決するべくOleg Kiselyovによって2008年頃に提唱されたiterateeは、新しい高性能webフレームワークsnap *2 や、hyena *3 で利用されています。また、HackagDB上にて、iterateeパッケージ*4、およびiterateeを利用できる様々なパッケージ *5 *6 *7 *8 が公開されています。 しかし、ドキュメントの少なさなどからiterateeがどういうものなのかよく分からないという人も多いようです。そういうわけなので、iterateeを易しく解説し

    Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳
  • One-liner in Haskell - 純粋関数型雑記帳

    Haskellを現場言語にするために、こんなものを作ってみました。 hoe: Haskell One-liner Evaluator (名前には深い意味はありません。) Haskellでワンライナーをやろうという誰得なツールです。誰得ですが、ワンライナーでも、型があると便利なんではなかろうか、型を元にユーザの望みの動作が大体決定できるんではなかろうか、という発想を元に作られました。 Haskellのワンライナーは、ghc -e でも評価できますが、これは (Show a) => a か、 (Show a) => IO a な型しか評価できません。hoeでは、String -> String など、もっと色々な型を評価できます。そして、その型に応じていい感じの動作が自動的に選択されます。 例えば、idを入力すると、入力がそのまま出力されます。 $ cat tmp Hello, Haskell

    One-liner in Haskell - 純粋関数型雑記帳
  • Parser Combinatorというもの(その2) - 純粋関数型雑記帳

    このページにはいわゆる解説記事を載せるつもりは無かったのだが、 (たいていは他にもっとうまい説明のページがあるだろうから…) どうやらこれがそうなってしまいそうである。 もっとまともな解説は http://sky.zero.ad.jp/~zaa54437/programming/clean/CleanBook/part2/Chap5.html こちらをどうぞ。(って人のページなんだけどな…) 概要 パーザコンビネータはプリミティブパーザと パーザ同士を組み合わせるコンビネータとからなる。 小さいパーザを組み立てて最終的なパーザを作り上げるのである。 パーザ パーザはいろいろなものが考えられるが、 ここでは単純に、文字列を引数にとり、 解析したもの+残りの文字列を返す関数であるとする。 type Parser a = String -> (a,String) Stringもパラメータ化すると

    Parser Combinatorというもの(その2) - 純粋関数型雑記帳
  • 1