タグ

2014年6月5日のブックマーク (2件)

  • 存在型を全称限量子と代数的データ型でエンコードする - maoeのブログ

    HaskellのGHC言語拡張に含まれる存在型は、existential quantifierを使わずにuniversal quantifierと代数的データ型を組み合わせて表現されます。以前からどうしてこんなことができるのかと思っていたのでそのカラクリを調べてみました。 GHC言語拡張では存在型を次のように定義できます。 {-# LANGUAGE ExistentialQuantifications #-} data Q = forall x. P x このように型引数を取らないデータ型のデータ構成子に、全称量化された変数を持つような型を定義します。この定義は直接existential quantifierを使えば次のように表現できるものです。 -- 疑似Haskell。GHCではコンパイルできない。EHCならできるかも。 data Q = P (exists x. x) データ構成子の

  • インデントで悩まないための単純な指針 - www.kotha.netの裏

    Haskellコードを書いていて、インデントを揃えるのが面倒だとか、インデントが揃っているか判別しにくいということがあるかもしれない。以前は私にもよくあったのだが、二つの簡単な指針に従うことに決めてからこの種の問題に悩まされることはなくなった。ので紹介する。 インデントを揃える際は、そこより左には空白しか置かない インデントは常にkの倍数個の半角スペースで行う。ここでkはプロジェクトごとの定数(以下ではk=2) 具体例 foo x y = do runThis runThat と書かずに、 foo x y = do runThis runThat と書く。 foo = bar * 2 where bar = 1 + quux quux = log 3 と書かずに、 foo = bar * 2 where bar = 1 + quux quux = log 3 と書く。 data Foo a

    インデントで悩まないための単純な指針 - www.kotha.netの裏