モナドによるプログラムの変更
Yasutaka Higa - profile not found -
研究目的
プログラムを変更するとプログラムの実行結果も変わる
しかし、バージョン互換を維持する場合など、ソースコードを変更した後も同じ結果を得たい場合もある
プログラムの改変の際にモナドとして改変することで過去のプログラムの保存ながら改変する
これによりリファクタリング支援や後方互換性の確保、プログラムの変更による実行結果の変化の検出などを行なう
さらにプログラムの改変をモナドとして表すことで、モナドの理論的背景である圏論の視点からプログラムを改変することの意味を探る
近況報告
圏論勉強中
拾った論文2つほど
Idea : 環境付きFunctor
Category
圏論勉強会
なるものがあったので動画で見てます
2回分ほど
papers : ATS
ATS 言語を使って不変条件を API に強制する
ATS なる言語があるらしい
C 言語を生成する
deductive type, linear type, dynamic type を定義できる
compile time に deductive type による check とかできる
deductive type で長さ付き List を定義して、生成されるC言語のソースが index out of array しないことを強制とかしてました
papars : monoid folding
圏論の話を聞いていたら、モノイドは畳み込み演算をどこから fold しても良い話が
並列でやっても良さそう、みたいな
A monadic calculus for parallel costing of a functional language of arrays
実行コストを計算するモデルを定義
それを計算する cost monad とか作る
Idea : Functor with Environment
環境を考える(variables, type information)
環境と対応した Functor を考える
通常の環境がメインメモリ空間
GPUメモリ空間は異なる環境(for Cerium)
別のPCも別空間(for Alice) # hand shaking with data segment signature
Idea : Functor with Environment
通常の環境の演算はGPU空間でも同じっぽい
Functor になりそう
GPU に行って、計算して戻ってきても良い
べつに CPU環境で実行しても良い
Code Segment と Data Segment の categorical な考え方になるかも?
割と精査はしていません