# yhseq やあ。みんなは巨大数を知ってるかな? そして、巨大数論も知ってるかな? 巨大数を作るのはとても楽しいんだ! さて、このライブラリは巨大数論に関連している。つまり、このライブラリは "Y数列" を計算する関数を実装している。ただ、正確に言えば "Y数列 Hexirp 版" だ。 元々の定義は数列で書かれている。[ここ](https://googology.wikia.org/ja/wiki/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%83%96%E3%83%AD%E3%82%B0:Hexirp/Y%E6%95%B0%E5%88%97_Hexirp_%E7%89%88)にある。 でも、数式だけだとあまりにも読みづらい。これは私自身でも痛いほどわかっている。それに作った本人でも計算がめんどくさい! だから、こうしてプログラムで実装しているわけだ。使っている言語は Haskell だ。数式に近い形でプログラムを記述できて、さらに文字列や入出力も上手く取り扱える。 私にはウェブページの上で動かすなんて気の利いたことなんてできないから、このプログラムはコマンドラインツールだ! でも、このプログラムを JavaScript などのウェブ上で動かせるコードにコンパイルする方法がいくつか (GHCJS, Asterius) あるから、それを使って頑張ってみるつもりだ! でも、手元でビルドするのも簡単だ。このリポジトリをクローンして Stack でビルドするだけである。この Stack については "haskell stack" とでも検索してくれればすぐ理解できると思う。 "stack" だけじゃ検索結果にゴミが入るから、きちんと "haskell" といれるんだぞ! ## 名称 Y数列 Hexirp 版は英語に訳すると Y-sequence Hexirp edition になる。 Y は Yukito の略だから必ず大文字になる。さて、これを縮めると Y-Seq H E にでもなるだろう。しかし、これじゃクールではない。だから H を前に持ってきて yhseq とした。 ## 使い方 yhseq には沢山のオプションがある。クールだろう! ``` yhseq [version] [seq] [num] ``` これは基本だ。出力は [seq] の基本列の [num] 番目だ。ここで [num] は自然数でなければならない。ただし 0 は自然数だ。また [version] はバージョン名だ。 * `-h`, `--help` - これはヘルプを表示するオプションだ。 * `-v`, `--version` - これはプログラムの全体としてのバージョンを表示するオプションだ。 * `-d`, `--detail` - 詳細な展開の過程を表示するオプションだ。 * `-f`, `--force` - 致命的なバグが発見されているバージョンを使おうとするとエラーになる。これを無理に押し通るオプションだ。 他にも連続して展開するモード、対話的に展開を続けるか選択できるモードを構想している。楽しみに待ってほしい!