Haskell

Haskellのエラー処理とMonadCatchIOの落とし穴

(この記事はHaskell Advent Calendar jp 2010のために書かれました)Haskellではエラー処理に例外が用いられます(MaybeモナドやErrorモナドも用いられますが、ここでは例外に焦点をあてます)。 例外インターフェースの話 Haskellにも、例外を扱うためにtr…

関数型!侵略ノススメ☆

(この記事は Functional Ikamusume Advent Calendar jp 2010 の為に書かれました)侵略!侵略!侵略!侵略!侵略!侵略!イカ娘! 再帰しなイカ? main = putStrLn $ f 6 where f 0 = "イカ娘!" f n = "侵略!" ++ f (n-1) 古風に再帰しなイカ? main = pu…

One-liner in Haskell

Haskellを現場言語にするために、こんなものを作ってみました。hoe: Haskell One-liner Evaluator (名前には深い意味はありません。)Haskellでワンライナーをやろうという誰得なツールです。誰得ですが、ワンライナーでも、型があると便利なんではなかろう…

Lazy I/O must go! - Iteratee: 列挙ベースのI/O

最近ちょっと気になるiterateeを勉強したので、日本語の解説を書いてみます。と言いつつ、大部分が The Monad.Reader Issue 16 *1 からの引用です。 はじめに Iterateeと呼ばれる新たなI/Oの抽象化手法が、最近にわかに広まりつつあります。既存のI/Oが抱え…

Haskellでメモ化を行うもう一つの方法

はじめに Haskell で動的計画法を書くための3つの方針 - tosの日記これを読んで、私もちょっと前にHaskellでメモ化をやる方法を考えていたことを思い出したので、書いてみることにします。Haskellでのメモ化は、私のかなり昔の駄文(リアルにびっくりするほど…

cabalで色付けされたソースにリンクしたドキュメントを生成する方法

$ cabal configure $ cabal hscolour $ cabal haddock "--haddock-options=--source-base=src/ --source-module=src/%{MODULE/./-}.html --source-entity=src/%{MODULE/./-}.html#%N"

Haskell binding for MessagePack

MessagePack の Haskell binding を作りました。 MessagePackとは http://msgpack.sourceforge.jp/ id:viver さんが開発された高速なバイナリシリアライザです。 http://d.hatena.ne.jp/viver/20080816/p1 や http://d.hatena.ne.jp/nobu-q/20091209 が詳し…

Haskellerのためのプレゼンツール"MonadPoint"

去る11月20日、Haskellナイトというイベント ( http://hop.timedia.co.jp/ )で、"HaskellerのHaskellによるHaskellerのためのプレゼン"というなんだかよくわからないタイトルで発表してきました。遅くなりましたが、作った物の公開と発表の補足をしておきま…

FTGL on GHC on Windows

http://hackage.haskell.org/package/FTGL これをWindowsで使いたいという話。泣きそうなほど苦労したのでここに書いとく。 GHCのインストール まずは、GHCのインストールです。WindowsだとHaskell Platform(http://hackage.haskell.org/platform/)を入れる…

The Eleventh ICFP Programming Contest

http://www.icfpcontest.org/疲れた…。 今年はまあ何というか、孤独との戦いであった。 来年はちゃんと休みをもらって、ちゃんとチームを作って出たいと思った。 初日はkzk氏、hillbig氏とともになんかやってました。 今年は問題がシンプルだなと思った。 時…

HaskellによるWebアプリ

http://tanakh.jp/hl/ darcs get http://tanakh.jp/repos/haskellitter/ Haskellでtwitterのようなものを実装しました。 試験的に公開してみます。 皆様利用して感想など頂けると幸いです。 Web2.0的な素敵な背景は、tkngさんに作っていただきました。 あり…

Haskellとインラインアセンブリ(構築編)

前回の内容を踏まえて、今回は、Haskellで記述されたアセンブリプログラムをアセンブルして、それを前回述べた方法を用いて実行することを目標とする。 本項ではHaskell上でアセンブリプログラムを記述するための言語を構築し、それに対するアセンブラを作成…

Haskellとインラインアセンブリ(導入編)

(以下では前提として実行するCPUをx86とします。SPARCとかの人はごめんなさい) Haskellから任意の機械語のコードを実行するにはどうすればよいのだろう。 Foreign.PtrにFunPtrという型が定義してあり、これは機械語コードの入っているメモリへのポインタを…

GHCのIntegerの深淵

前書き 先日の日記のSPOJにおける√2を200万桁求めるという課題で、私はCを用いてそれを達成したのであるが、Haskellで100万桁を求めている人がいて、それがずっと気になっていた。普通に計算すると10万桁で精一杯で、とてもHaskellで100万桁なんて無理のよう…

再入門Haskell(前編)

(私はあんまり広く情報収集したりしないので、 ここに書く内容はとうによく知られた問題なのかもしれないが、あしからず…) プログラムの実行において、何らかの外部的な情報 (つまりIOを介して得られる情報)を そのプログラム全体から参照したいケースという…

多言語HTMLプリプロセッサ

今日の夕方ごろ、M氏から多言語向けページを楽に作成するための プリプロセッサのアイデアを聞いたのだが、 いわくパージングにあんまり慣れていないらしいということだったので、 私がHaskellでさらさらさらりと作成してみた。 かなり久しぶりのHaskellだっ…

KOFに行ってきた

http://k-of.jp/ と言っても、Haskellの発表をしに行っただけなんだけど。 まぁ、なんといいますか、あんなふうな発表をするのは 初めてなわけで、締め切りに追われながらでっち上げた 資料は自分でもよく把握していなくて、 何このサンプルコード?とか思い…

WASHを使う

というわけで、WASHが使えるようになったので、 何か作ってみようということで、ツリー式BBSを作ってみた。http://fxp.infoseek.ne.jp/tmp/bbs/Main.hs外からアクセスできるLinuxサーバーが無いので、 実際にどのように動くのかをお見せできないのが残念だが…

エンバグ効率

昨日の続き M氏がエンバグ効率なる言葉を作ってしまったので、 ちょっとそれについてお話しましょう。 エンバグ効率というのはちょっと不自然な感じのする言葉ですが、 意味はそのまま、バグを仕込む効率のことです。 もちろん、エンバグ効率は低い方が良い…

Functional Online Judge

Haskellでオンラインジャッジしたいよね? ということでこんなものができました。http://tanakh.ath.cx/OnlineJudge/oj.cgi/あらかじめお断りしておきますが、 いつ公開が終了するかも、いつデータを消すかも分かりません。 ジャッジシステムはデータベース…

昨日のHSQL

いろいろやっているうちになんとかリンクはできるようになった。 とりあえず、前段階で何でリンクできなかったかというと、 GHCが持ってるmingwにWindowsネイティブ版MySQLのライブラリが リンクできなかったということ。 mingwに渡せるライブラリを作ること…

HSDL

CabalとHSCについて知ったので、 GHC6.4では使えなくなっていたHSDLを ( http://fxp.hp.infoseek.co.jp/haskell/HSDL/ ) Cabalに対応したり、いろいろした。 とりあえずGHC6.4で動くようになったので、これでよしとする。 というわけで、わき道にそれたが、 …

HSQLが入らない

久々に作りたいものができたので、 そのためにデータベースソフトをインストールして それを何らかの言語からいじれるようにしようと思った。 最初PostgreSQL+Gaucheでやろうとしたのだが、 まずいきなりPostgreSQLのインストールで詰まった。 Cygwin上で動…

スタックオーバーフローって

Haskellで普通に書かれたプログラムの入力サイズがでかくなったら スタックがあふれるという件を調査中だ。 どこからともなくメモリがあふれたり、 スタックがあふれたりすることがあるが、 遅延評価ゆえによく分からない。 メモリがどう使われているか、あ…

今年のICFP

今年も(今年は前半が?)終わりました。 私も去年と同じくM氏と参戦しておりました。 (もちろんHaskellで) 今回は、銀行からお金を盗む泥棒とそれを捕まえる警察チームのAIを 考えるという課題でありましたが… はっきり言って方針が立てにくかったです。 私は…

ゲームプログラミングというもの

案ずるより生むが易し? http://d.hatena.ne.jp/nushio/20050529 M氏がHaskell版グラディウスを開発した。 途中経過を逐一報告してもらっていた私としては、 最初の方の自機がへろへろと動くのを見せてもらって、 まぁ、どこまで出来るんですかなぁ〜?と思…

輪講

今度研究室の学部生でやることになった輪講で Haskell:The Craft of Functional Programming (International Computer Science Series) を読むことになった。 私がHaskellerであることを知った教授が この本を候補に入れたらしいのだが、 正直この本の内容は…

C言語からHaskellへの変換

http://www.sun-inet.or.jp/~yaneurao/ こちらにてD言語にも移植されている http://www.glexcess.com/ このデモをHaskellに移植してみた。 実は去年の夏ごろに移植しようかと思っていたのだが、 GHC6.2ではHOpenGLからテクスチャサポートがはずされていたの…

Haskell シューティングゲーム

東大の夜に作ったシューティングが このへんで公開された。 やっぱり難しい…。これクリアできるの? 万が一クリアできた場合、Haskellへの熱いメッセージが拝めます。 まぁ、ソース読んだら分かるんだけど…。

About Haskell について。

久しぶりにこのページをみた。 Haskellの利点として短いクイックソートが例に挙げられていた。 昔はふむふむと読んでいたのだが、今読んでみると 若干の違和感を感じた。 それというのは、Cで書かれたクイックソートのほうだ。 たしかに例に挙げられているC…