2009-07-01から1ヶ月間の記事一覧
実は、私のfull-sessionsというセッション型のライブラリは中で unsafeCoerce#を使っているので型安全でない。使ってくれる人にとってそれは心もとないだろうし、そもそもunsafeなんとかは、いけがみさんによればSPJとSimon Marlowしか使ってはいけないこと…
TypeEq による型の非等価性判定は結果として矛盾することがある,というお話.型変数の比較で,引数の型が異なることを表現する関数を作ろうとして次のようなコードを書いたとする: typeEq' x y = type'eq x y :: HFalse ここでGHCのeagerなcontext reducti…
http://d.hatena.ne.jp/keigoi/20090709/1247155626 の続き.この話は無駄にUpdateとかの型レを使っていてややこしかったです.ここで紹介したコードを ghciでロードして,次を入力すればわかります: ghci> :t type'eq undefined undefined type'eq undefin…
可変長引数のテクニックは普通に Text.Printfで使われてるんですね。 型レ以外ではHaskellをヘビーに触るわけではないので知りませんでした…型安全な printf (引数の過不足や型ミスマッチをチェックできる)については Olegさんの最近のポスト http://okmij.o…
もっと簡単な例で追記しましたHaskellの型レでは型変数同士の比較ができないぜーというお話をしたんですが、OlegさんのReversing Haskell typechecker: converting from undefined to defined のTypeEqを試したらば、できちゃいました。Haskell型レのバイブ…
Olegさんの Generic polyvariadic printf in Haskell98 は、プレーンなHaskell98で可変長引数関数をつくり,printfを実現しています. 関数の型(a->r)は型構築子(->)と型引数a rからなる型 (->) a r なわけで,型クラスのインスタンスでうまいこと回せば、こ…