タグ

ブックマーク / tanakh.jp (5)

  • 非決定計算としてのリストモナド - 純粋関数空間

    最近のHaskell 最近はHaskellに関するブログ記事をちらほら見かけるようになって来ました。 日々のスクリプトに使おうとしようという人もいるようで、 http://d.hatena.ne.jp/aya_eiya/20120221/1329836207 このようなブログ記事を見かけました。 Haskellで書いたらそんなに汚いコードにはならないというのはたしかにあります。 やってはならないということがHaskellには比較的少ないのだと思います。 というのも、Haskellでは、やってはいけないことがそもそもできないようになっているか、 やることが極めて難しくなっている(unsafeプリフィックスを持つ関数を駆使したりなど) ことが多いのです。 しかし、そんなHaskellのプログラムも、少し工夫すればもっと良くなることもあります。 列挙問題 先ほどのブログの記事の1つ目のプログラム

  • たのしいHaskellのツールチェインとC++ - 純粋関数空間

    というタイトルで、先日、社内の公開セミナーで話しました。 発表資料はこちら。 Haskellのテストフレームワークとベンチマークフレームワークがよくできているので、 これをC++でも使えるんじゃないかという内容です。 概要 背景として、QuickCheck をもっと多くの人に知って/使って貰いたいというのがあります。 QuickCheckは、普段から使っている人間からすると、よくいろいろなバグを拾ってくれるとても便利なものなのですが、 残念ながら普段開発に利用しているC++には相当のもので完成度の高いものが見当たりません。 だからといって、そこから作るためにC++のテンプレートをいじくりまわすには、私はもう老いてしまいました (与えられた関数にランダムな入力を与えるだけなら簡単なのですが、ジェネレータを自由にいじれる機能がやはり欲しいところで)。 そう思った時に、FFIを使えてQuickC

  • HakyllとpandocとMighttpdでサイトを作った話 - 純粋関数空間

    このページについて ページのフッタに書いてあるので、お気付きの方もいらっしゃるかと思いますが、 このページは Hakyllと Pandocと Mighttpdにて運用されています。 完全なソースコードを https://github.com/tanakh/tanakh.jp から参照できます。 HakyllとはHaskellによる静的ページ生成ツールで、 Jekyllにインスパイアされて作られたものだそうです。 JekyllがRubyによって書かれ、Rubyによってページの構造を記述するのに対して、 HakyllはHaskellによって書かれ、Haskellによってページの構造を記述します。 Pandocとはいろいろなドキュメントフォーマットのコンバータです。 Haskellで書かれています。さすがにもうHTMLを手で書きたくはない、 かついろいろなブログの独自のフォーマットなんて覚えてい

  • 書評「型システム入門」 - 純粋関数空間

    追記:Amazonのリンクを張っていますが、オーム社のサイト http://estore.ohmsha.co.jp/titles/978427406911P からも購入できます。 AmazonKindle版はまだ出ていないようですが、 こちらからは今現在でDRMなしのPDFも購入できます。 Kindle版リリースの際にも、 フローレイアウトになる予定はないそうですので、 Amazonにこだわりがあるのでなければ、 電子版で読みたいという方は、こちらから購入されるのが良いかと思います。 あらかじめお断りしておきますと、 この記事は書評ではなく、宣伝です。 数年前に原著を読んだ時から、 書は私の中では間違いなく良書ということになっておりますので、 私がいまさら内容の善し悪しを語ることには、 はじめから意味がないと思っております。 なのでここでは、このの魅力、読んで欲しい人、どういう風に読

    hiroyukim
    hiroyukim 2013/05/08
  • ConduitとHaskellでネットワークプロキシサーバを作る - 純粋関数空間

    この記事は http://www.yesodweb.com/blog/2012/06/conduit-0-5 の翻訳です。 conduit-0.5 をリリースしました。 conduitはストリームデータを扱うためのライブラリです。 conduitを用いると、様々な形のデータを生成、変形、消費するような処理を、 簡単に組み合わせることができるようになります。 enumerator/iterateeパラダイムと同じ問題を解決することを目的に作られましたが、 アプローチはこれらのものとは異なります。 conduitは簡単に理解して利用できるものになることを一番の目的としています。 遅延I/Oとは異なり、リソースの即時開放を保証し、 また、純粋なコードに例外を持ち込みません。 今回のリリースでSource、Sink、Conduitのそれぞれを作るための、 シンプルで効率の良い、高レベルのインターフ

    hiroyukim
    hiroyukim 2012/11/19
  • 1