generated at
Koka

以下のような特徴を持つMicroSoft製のプログラミング言語
effect typing
Effect Handler
PerceusによりGCがなく、Cにcompileされる
関数型言語
型推論ありの強い型付け
functional but in-place (FBIP)という独自のパラダイム
言語のコア部分が小さい
糖衣構文がめちゃくちゃ多い
JavaScriptに似たSyntax (そんなに似てない)
開発者はDaan Leijen
拡張子は .kk
読み方は「こうか」
Effectの日本語である「効果」由来
ちゃんとした訳としては「作用」とかの方が近そうだがmrsekut





使う
Nixで入れられる
$ nix-shell -p koka
適当に hoge.kk を作って、 :l hoge.kk で読み込めば良い ref






参考







kokaって別に純粋関数だけを扱ってるわけでもないんだよな
純粋なの、exnとdivだけだし
それでもHaskellよりも便利に扱えそうな感じする(?)
algebraic effectsが普通に実用できるようになったら、haskellの制限とかの良さって何になるんだっけ、というのを考えたい




effect handlerは、最終的に合成を行うFreeモナドのinstanceとして表現できる
代数的でないmonad (e.g. Cont)は表現できない
Kokaは内部的には、monadとshift/resetを使用してeffect handlerをコンパイルしてる



handlerを書かなったときにちゃんとコンパイルエラーになるか #??
hsで言うmain関数的なものがあればすぐわかるはず
main関数にeffectが存在すればそれがhandlingされないものになる
あるいはランタイムがhandlingするもの、になる
例えばconsoleとかは当然残っていて良いはず
そうじゃないとhandling忘れめちゃくちゃ多発するでしょ