SATySFiでローマ数字・漢数字に変換する方法
概要
自分が作成したnum-conversionというパッケージを使用することで、ローマ数字変換・漢数字変換を楽に行うことができます。
インストール方法
注意事項
このパッケージではstring-explode
というプリミティブを使うので、2020/2/22以降のHEAD版が必要です(将来v0.0.5としてリリースされる予定のものです)。
Satyrographosを使う場合
$ opam update $ opam install satysfi-num-conversion $ satyrographos install
でインストールができます。
手動で行う場合
まず
$ git clone https://github.com/puripuri2100/SATySFi-num-conversion.git
をすることで手元にリポジトリのコピーを作成します。
次に、LIBROOT/local/packages/
以下にnum-conversion
というフォルダを作ります。
最後に、フォルダ内のnum-conversion.satyh
をLIBROOT/local/packages/num-conversion
にコピーします。
これで完了です。
提供する関数
モジュール名はNumConversion
です。
ローマ数字関連
to-roman-upper : int -> string option
to-roman-lower : int -> string option
どちらも、数字を与え、その数字が変換可能なものであった場合にローマ数字となる文字列を返します。 0より大きく5000より小さい整数が変換できます。
違いは、返ってくる文字列のアルファベットが大文字であるか小文字であるかだけです。
from-roman-upper : string -> int option
from-roman-lower : string -> int option
どちらも、文字列を与え、その文字列がローマ数字として解釈可能なものであった場合に整数に変換します。
漢数字関連
to-kansujix : int -> string option
数字を与え、その数字が変換可能なものであった場合に漢数字となる文字列を返します。
0以上の整数が変換可能です。
この漢数字列は算用数字の表記をそのまま漢数字に当てはめた、俗に一〇方式と呼ばれる方式の表記になります。
位も書く一般的な十方式はまだ実装していません。
from-kansujix string -> int option
一〇方式で表記された文字列を受け取ると整数に変換します。
全角数字関連
to-zenkaku : int -> string option
数字を与え、その数字が変換可能なものであった場合に全角数字となる文字列を返します。
0以上の整数が変換可能です。
from-zenkaku string -> int option
全角数字の文字列を受け取ると整数に変換します。
おわりに
ローマ数字あたりは使いどころがかなりありそうだと思っています。早く十方式の漢数字表記も実装したいと思っています。
使っていただけると嬉しいです。