タグ

ブックマーク / scrapbox.io/haskell-shoen (3)

  • Recursion Schemes - haskell-shoen

    再帰関数の再帰構造だけを抜き出して抽象化した概念。例えばRecursion Schemesの一つであるcataはリストにおけるfoldrトリックの一般化と言える。このように再帰関数から再帰構造を独立させることは法則を使った等式論証を可能にしたりコンパイラによる最適化を期待することが出来る。再帰を直接使わずにRecursion Schemesを使ってプログラムを書くことは、gotoを使わずにfor, whileを用いることで構造的なプログラムを書くことに例えることもできる。ある関手Fの始代数/終余代数として定義される代数的データ型からは、その始対象/終対象としての性質から別の(余)代数との間にユニークに伸びる射が存在する。この射を利用してRecursion Shemesは定義される。Recursion SchemesはSquiggolやBird–Meertens formalism (BMF

    Recursion Schemes - haskell-shoen
  • パッケージティアリスト - haskell-shoen

    ティアリストは、対戦型ゲームなどにおいてキャラクターなどの要素がどれほど環境を支配しているかを表す表である。ここでは、Haskellのパッケージのポピュラーさ、パフォーマンスや完成度などを総合的に評価し、S、A、B、C、D、Fの6つのティアに分類した。以下の要素が評価の対象となるが、主観も含まれており、完全な優位性を保証するものではない。 パフォーマンス(速度とメモリ使用量): プログラムの根幹をなすデータや制御構造などは気軽に変更できないためパフォーマンスに気をつけたい。 ドキュメントの網羅性 人気度 メンテナンスされているか APIの一貫性: 筋道の通ったインターフェイスは筋道の通ったコードを促進する。逆の場合、雪だるま式にぼろが出がち。 依存パッケージのティア: いくら体の完成度が高くても、質の低いライブラリを強いるようなAPIは減点対象。 S Tier 実用的なアプリケーションや

    パッケージティアリスト - haskell-shoen
  • Applicative - haskell-shoen

    値をそのまま包むほか、二つの対象を結合し、それぞれの中身に関数を適用できる構造。モナドから分岐能力を奪い、逐次実行のみとなった下位互換とみなすこともできる。そう言うと弱そうに見えるが、Applicativeにしかできないトリックはたくさんあり、実はモナドよりも奥が深い。特にFunListの応用例は必見だ。

    Applicative - haskell-shoen
  • 1