+let toRomanNumber (v : int) : string =
+ let rec decompose (v : int) : string =
+ if v >= 1000 then
+ "M" + decompose (v - 1000)
+ elif v >= 900 then
+ "CM" + decompose (v - 900)
+ elif v >= 500 then
+ "D" + decompose (v - 500)
+ elif v >= 400 then
+ "CD" + decompose (v - 400)
+ elif v >= 100 then
+ "C" + decompose (v - 100)
+ elif v >= 90 then
+ "XC" + decompose (v - 90)
+ elif v >= 50 then
+ "L" + decompose (v - 50)
+ elif v >= 40 then
+ "XL" + decompose (v - 40)
+ elif v >= 10 then
+ "X" + decompose (v - 10)
+ elif v >= 9 then
+ "IX" + decompose (v - 9)
+ elif v >= 5 then
+ "V" + decompose (v - 5)
+ elif v >= 4 then
+ "IV" + decompose (v - 4)
+ elif v >= 1 then
+ "I" + decompose (v - 1)
+ else
+ ""
+ decompose v
+