線形λ計算というのは、「変数をちょうど一度だけ使わなければならない」という線形型をもったλ計算だ。これを Haskell で実装してみた。「ファイルが開かれたら必ず閉じる」という制約のような、線形型 (linear type) が必要な DSL の実装の参考になるかもしれない。 線形λ計算の実装は、既に Olegさんがやっている。それは変数参照をde Bruijn indexを使って書くようになっている。 一方、この実装は、よりHaskellに近い記法で書けるようになっている。 使用例 λ抽象の前に lam, 関数適用の前に app, 変数参照の前に var が必要である以外は Haskell と同じ記法で書ける。 Linear Lambda Calculus の頭文字をとって LLC モナドという名前にしてある。 LLCモナドの型は LLC t ii jj a となっていて、 t 型のタ