format

UTMCのP先輩(IS 4年)とIRCで話していたのだが,あなごるの「100まで英語で数える」という問題でCommon Lispがぶっちぎりの首位らしい.「ライブラリに元々ある機能だとしか思えない」と.

その通りで,関数format(Cのprintfみたいなもの)では~Rという書式指定で英語の数詞が出力できる.

  • ~R prints arg as a cardinal English number: four.
  • ~:R prints arg as an ordinal English number: fourth.
  • ~@R prints arg as a Roman numeral: IV.
  • ~:@R prints arg as an old Roman numeral: IIII.

つまり骨子は(dotimes (i 101) (format t "~R~%" i))だけだ.ただしP先輩によれば,実際にあなごるで正解になるには「seventy-seven みたく#\-で繋がってるのを#\spaceに置き換えるのが要る」らしい.それにはsubstituteを使えばよいだろうか?

何が言いたいかと言うと,(外部ライブラリでもない)言語仕様にしょうもない機能を積んでるなぁ,そんなだから仕様が鈍重になって新しい流れに追随し辛くなるのでは... と.
そういやPython 3もまもなく出ると聞いた.こっちはこっちで,変化が激しいあまりの非互換性に泣かされるのか...(だったらPython製アプリを使うなという話だが)