タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

Data.Genericsに関するnsyeeのブックマーク (2)

  • スクラップ・ユア・ボイラープレート - 取り急ぎブログです

    Scrap Your Boilerplate:A Practical Design Pattern for Generic Programmingという論文を勉強中です。 以前リストの自由度で話した内容と関連しているのですが、 Haskellのリストは長さは可変な代わりに要素の型が全て同一でなくてはいけなくて、タプルは要素型が同一でなくてはよいけれども長さは固定、つまり リストでは [1, 2] :: [Integer] [1, 2, 3, 4] :: [Integer] のように長さの違うリストでも同じ型で表現できるけど、 [1, 'a'] のようなことは許されない。 タプルでは (1, 'a') :: (Integer, Char) は許されても (1, 2) :: (Integer, Integer) (1, 2, 'a') :: (Integer, Integer, Char) と

    スクラップ・ユア・ボイラープレート - 取り急ぎブログです
  • lucille development blog » Blog Archive » Scrap your boilerplate

    Scrap your boilerplate http://www.cs.vu.nl/boilerplate/ “Scrap your boilerplate” と呼ばれる、Haskell 向けのジェネリックプログラミングライブラリを知りました. Haskell におけるデザインパターンとも言えるでしょうか. Haskell で RSL(RenderMan Shading Language) コンパイラを書いていると、AST(抽象構文木) などのツリー構造なデータ型の一部にだけ作用させたいコードが必要なときがよくあるのですが、この scrap your boilerplate がまさにそれを解決してくれることが分かりました. たとえば、以下ような例を考えます. replaceConst 関数は Expr の Const ノードを Var ノードに置き換えます. Expr や Stmt は

  • 1