Koka
effect typing
Effect Handler
関数型言語
型推論ありの強い型付け
言語のコア部分が小さい
糖衣構文がめちゃくちゃ多い
JavaScriptに似たSyntax (そんなに似てない)
拡張子は .kk
読み方は「こうか」
Effectの日本語である「効果」由来
ちゃんとした訳としては「作用」とかの方が近そうだが

使う
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忘れめちゃくちゃ多発するでしょ