2017-08-05: KokaとかObjeckとかZeptoとか
やったこと
Koka
Kokaという、エフェクト計算をベースにしてるけど見かけがML系じゃない言語がある。当然だけど手続き型的な言語でもエフェクト計算はできるんだな、という印象。面白いと思う。
JavaScriptにコンパイルされるのでAltJSと呼べなくもない。
また、ビルドのためにnpm installをするとnpm install -gが発動するクソ仕様。ちなみにsudo npm install時にpreinstallスクリプトを実行するのはnpm@5系列から禁止になったのだけど、どうするつもりなんだろう? 他にもcabal installしだしたりして手が付けられない。こんなんに環境を破壊されてはたまらないのでdockerで閉鎖環境を作り出して、そこでビルドした。
ちなみにマルチディスパッチで、x.fooはfoo(x)と同じ意味になる。ChaiScriptもこうだったけど、最近はこういうの流行りなんだろうか?
Quineはなんかそれっぽく書いたつもり。あんましエフェクトとか使えなくて微妙。
Objeck
なんかVMで実行するプログラミング言語。JITとかもあるし標準ライブラリをがんばって作ってるみたい。しかし手元でまったくビルドが通らない。しかたないので公開されているバイナリで実行した。ビルドスクリプトを見ると成果物を~/Desktopに保存したりするので邪悪感がハンパない。
言語としては→をメソッド呼び出しに使う以外はいたって普通な気がする。あとPrintメソッドとかそれ系がオブジェクトに直接生えてる。それってどうなのよ‥‥。
Quineは→が目立つようにがんばったつもり。
Zepto
Haskellで書かれたLisp。stack対応してないみたいだけどstack initとapt install libpcre3-devで動いた。stackすごい。
SchemeっぽいLispってことでSchemeのformatが使えるのだけど、実装が中途半端なせいでいまいち使えない。仕方ないのでQuineは、Schemeなら恐らくなんで動くんじゃないかっていうevalで組み立てるやつにした。手抜き。
Quineリポジトリ
249言語になった。250言語で祝おうとしたら256言語にしろと言われたので256言語までがんばる。