アラビア数字・ローマ数字変換をSqueak Smalltalkで

Common Lispには時々わけのわからない機能がある。formatの~@Rもそのひとつ。
roman->arabicの方はちょっとズルした。formatの~@Rに対称な機能がparse-integerに無いのは美しく無いよなあ。

http://blog.practical-scheme.net/shiro/20110901-arabic-roman


商用のCincom Smalltalkなどと違って、自由気ままなSqueak Smalltalkにはわけの分からない機能がいやというほどあります。Integer>>#printStringRoman や String>>#romanNumber もそのひとつ。Integer と String に対象の機能があるのは美しいですね。^^;

11 printStringRoman   "=> 'XI' "
1888 printStringRoman   "=> 'MDCCCLXXXVIII' "
'mdccclxxxviii' asUppercase romanNumber   "=> 1888 "
'McmXLv' asUppercase romanNumber   "=> 1945 "