2018年12月19日のブックマーク (3件)

  • ASTのための高階代数を元にした recursion schemes - Qiita

    はじめに Recursion schemes(再帰スキーム)とは,再帰的なデータ構造に対する汎用コンビネータの総称のことである.ところで, recursion schemes から導出される再帰構造を捉えた Functor (代数) による再帰データの表現は,コンパイラやインタプリタでASTを扱う際便利な場合が多い.しかし,この表現は相互再帰に弱いという欠点がある.ここでは,高階代数で同様のことを考えることにより,この欠点を克服する手法を紹介する. なお,以下のものを想定している. GHCのバージョン: 8.6.3 前提とするGHC拡張 BlockArguments DataKinds DeriveFunctor FlexibleInstances FlexibleContexts FunctionalDependencies GADTs LambdaCase MultiParamType

    ASTのための高階代数を元にした recursion schemes - Qiita
    lotz84
    lotz84 2018/12/19
    冒頭のrecursion schemeの説明も分かりやすい。DSLの例から相互再帰・recursion schemes for higher algebra導入までの考え方も自然で、色々応用できそうな気がする。続編のパーサとインタプリタも楽しみ!
  • [論文/ライブラリ紹介] Algebraic graphs with class (functional pearl) - Qiita

    記事は Haskell (その2) Advent Calendar 2018 16日目の記事です。 記事では、Haskell Symposium 2017 で発表された Algebraic graphs with class (functional pearl)1 という論文および、その実装である algebraic-graphs パッケージを紹介していきます。 提案されている Algebraic graphs (記事では代数グラフと呼ぶことにします)は、これまでのグラフ表現に代わり、グラフの接続関係を加法や乗法(に似た表現)で表すことで、不正な形式のグラフの構築を型レベルで抑止し、グラフに対する様々な操作をエレガントに表現しています。 これまでのグラフ表現 ここで言うグラフとは、棒グラフや曲線グラフのようなものでなく2、有向グラフのような点とか矢印からなるものを指します。 グラフ理

    [論文/ライブラリ紹介] Algebraic graphs with class (functional pearl) - Qiita
    lotz84
    lotz84 2018/12/19
    グラフは人間には身近な定義だったけど、algebraic graphはより代数的な形のシンプルな定義になってプログラムでも扱いやすそう。これからの発展が楽しみだし、今あるグラフの諸概念の翻訳を読むのもすごく勉強になりそう
  • United Monoids | no time

    In this blog post we will explore the consequences of postulating 0 = 1 in an algebraic structure with two binary operations (S, +, 0) and (S, ⋅, 1). Such united monoids have a few interesting properties, which are not immediately obvious. For example, we will see that the axiom 0 = 1 is equivalent to a seemingly less extravagant axiom ab = ab + a, which will send us tumbling down the rabbit hole

    lotz84
    lotz84 2018/12/19
    2つのモノイド構造を持ち0=1を満たすやつ。逆元を取る操作が無いから環の時のように0には潰れない。algebraic-graphのOverlayとConnectがこの性質を持つ。単体的複体も例に上がってるのが面白い