アラビア数字・ローマ数字変換をSqueak Smalltalkで
Common Lispには時々わけのわからない機能がある。formatの~@Rもそのひとつ。
http://blog.practical-scheme.net/shiro/20110901-arabic-roman
roman->arabicの方はちょっとズルした。formatの~@Rに対称な機能がparse-integerに無いのは美しく無いよなあ。
商用のCincom Smalltalkなどと違って、自由気ままなSqueak Smalltalkにはわけの分からない機能がいやというほどあります。Integer>>#printStringRoman や String>>#romanNumber もそのひとつ。Integer と String に対象の機能があるのは美しいですね。^^;
11 printStringRoman "=> 'XI' " 1888 printStringRoman "=> 'MDCCCLXXXVIII' " 'mdccclxxxviii' asUppercase romanNumber "=> 1888 " 'McmXLv' asUppercase romanNumber "=> 1945 "