2024-12-19: DAY 19 - NGS (Quine AC 2024)
DAY 19
NGSというプログラミング言語があります。
Next Generation Shellの略らしいです。PSOのことではないらしい。
Shellと言っているように外部コマンドを呼び出すのが得意です。
あと関数が第一級だったり、ちゃんとデータ構造があったり、関数のオーバーロードがマルチディスパッチされているっぽかったり、結構しっかりした言語になってます。
DevOpsにフォーカスしているらしく、AWSのリソースを操作するクラス (?) が入っていたりするみたいです。
Quineは匿名関数をいい感じに呼び出して一行にしました。F(x) ...
が匿名関数です。
code
関数はオブジェクトのソースコード上での表現を返す関数みたいです。
ドキュメントがしっかりしていて良かった。
ただ、x.echo()
が echo(x)
として扱われてメソッド呼び出し風にできるはずなのに、全体だと上手くいかないのが謎だった。どういうことなのだろう。
echo((F(x) x.replace(chr(37), x.code()))('echo((F(x) x.replace(chr(37), x.code()))(%))'))
実行は ngs
コマンドで。
$ ngs quine.ngs | diff quine.ngs -