*「今日はきりたんぽの日!」
ZR「ですね」
*「ですね、じゃないでしょう!? 毎年恒例の1TeXネタは?」
ZR「恒例っていっても去年はなかったじゃん」
*「一応ツイッタァーに何かありますよ」
ZR「まあとにかく、1TeXに関してこれ以上ネタを見つけ出すのは無理がある」
*「エーッ! 1TeXがダメだとしても、世の中には“TeX以外”もあるでしょう。例えば“1SATySFi”とかを作れば?」
ZR「SATySFiには“catcodeの概念”がないから字句解析規則が変えられない。要するに想定された書式、現状では“本来のSATySFi言語”とMarkdown、それ以外を読み込めるようにするのは無理。まあ、将来に多段階計算の構想が発展すれば可能性はあるんだろうけど」
*「エーッ! 1SATySFiは作れないの!? きりたんぽの日のネタも作れないなんて、SATySFiはオワコン!!」
どうにかして1SATySFiを作ってみた
SATySFiをオワコンにしてしまうのは忍びないので、無理やり作ってみた。
- 1から始めるSATySFI「1SATySFi」(Gist/zr-tex8r)
インストールは以下のようにする($LIBROOT
はライブラリルート)。
1satysfi.satyh
→$LIBROOT/dist/packages/
1satysfi.satysfi-md
→$LIBROOT/dist/md/
……ん、md? そう、要するに「Markdownとして読み込ませる」という手段を使っている。
さっそく1SATySFi文書を作ってみる
1SATySFiのソースは、1TeXと同様に「文字コードを“1”の1進数で表したもの」を改行で区切って書く。
111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111 11111111111111111111111111111111 1111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111 1111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 111111111111111111111111111111111
ここで注意であるが、各行の先頭に空白文字4つを入れる必要がある。なぜかというと「結局Markdownだから」である。
もう一つ1TeXと異なる点として、1進数表記にする前の元のテキストは「出力する文字列そのもの」とする。SATySFi言語のコードではないことに注意。
※文字コードの10(つまり1111111111
)を入力すると出力において改行が起こる。
さっそく1SATySFi文書をコンパイルしてみる
Markdownとしてコンパイルするので--markdown 1satysfi
というオプションが必要である。
satysfi --markdown 1satysfi hello.1saty
コンパイル結果は……。
スバラシイ。
まとめ
*「アレレ? SATySFiのコードを1進数にするんじゃないの? このままだと『あらゆるSATySFi文書を“1”だけで表記する』ことになってないから全然ダメじゃん」 ZR「………………」