2017-11-23: NOIRを色々と直した
やったこと
NOIRを色々直した
主にCrystalのレキサを中心に色々と直した。直しまくったのでどこを直したとかよく覚えていない。RougeにCrystalのレキサをバックポートしているうちに色々と知見を得たので、それを反映した感じ。
BracmatでQuineを書いた
Bracmatというプログラミング言語がある。記号処理言語とあるとおり、普通にxとか書くとシンボルとして処理されて、!xとか?xとかやらないと参照とか代入ができない。比較的昔から作者がメンテしてる感じがする。でもemscripten対応とかもしてて面白い。がんばってほしい。
妙に暗号めいた言語で、ドキュメントを読んでもよく分からなかったので困った。しかしQuineは書けた。パターンマッチとかあるっぽいし、それを上手く使いこなしたかったな、という感じ。
普通にcloneしてきてsrc以下でmakeしてもmacOSだとビルドできなかった。-staticフラグがついてるのがいけないらしいので、それを消すとビルドできる。実行は、コマンドライン引数でプログラムそのものを渡す感じだったので、
$ ./bracmat "$(<quine.bra)" | diff quine.bra -
とかやると動く。
CLIPSでQuineを書いた
CLIPSというエージェントシステムを書くためのプログラミング言語がある。Lispっぽい文法だけど、defruleとかがあって、パターンマッチして色々とできる。そこそこ面白い。
Quineはformat関数の力技でやった。もうしわけねえ。もう少し綺麗にできるような気がするのだけど、中々むずかしい。
実行は-f2オプションが必要。
$ clips -f2 quine.clp | diff quine.clp -
これで255言語になった。次の言語でリリースを切る予定。何しよう。いい加減Adaを書くか。
思うところ
異常に疲れているのだけど上手く眠れない。死にそう。