2022-08-30: RocでQuineを書いた
やったこと
Roc
Rocというプログラミング言語がある。
https://github.com/roc-lang/roc
かなり純粋な関数型言語で、副作用のある部分を platform
として切り出して、様々な言語で書けるようにしている。
C言語、Rust、あとZigで書けるらしい。
わりと壮大な試みな感じがするけれど、意外と形になっている。
少なくともQuineは書ける。
でもエラーメッセージははてしなく不親切だったり、コンパイラーがなぜかスタックしたりすることがあったので、全体的な完成度はそこまで高くないようにも感じた。
構文の特徴としては、Haskellの let
みたいなのがインデントで書けるのがちょっと面白い。
面白いけどぶっちゃけあまり読みやすいとは思わなかった。まあこれは個人の好み。
あとは、レコードとかタグがオープンになっていて、便利かはともかく興味深かった。
衝突とかどうするんだろう。名前空間とかが難しそうに思う。
Quineは、JSON
エンコードが使えると思ったら、未完成で何もエスケープしてくれなかったので、仕方なく自作のエンコーダーを書いていい感じにやっている。
文字列の置換をする関数はなかったけれど、split
と joinWith
があったのでそれでどうにかした。
あとエフェクト周りがそこまで分からなかったので、文字列を生成して一気に出力する形になっている。
可能なら逐次出力するようにしたかったところ。
platform
の参照先とかはそのうちバージョンで変わるかもしれないので、そのときは追従したい。
というか標準ライブラリ的に、標準のプラットフォームを提供してくれ。
https://github.com/makenowjust/quine/blob/42f6579ee4a9b62b40a7dc4899caa96eb4e6ab17/quine.roc
何はともあれ面白い言語だと思うので、チェックしていきたい。
Embedly
なんかMobileの方のTwitterのURLだとエラーが起きていい感じに展開されていない。
とりあえず直近の記事は直したけど、普通にEmbedly側のバグっぽいので、放置する。
そのうち直るだろう。
研究
方向性が定まると、色々勉強することなども決まっていい感じ。
やっていくぞ。