Tuesday, September 02, 2014

Decimal a Romanos - Al estilo Haskell

Como lo prometí...aquí está mi versión de Decimal a Romanos en Haskell...y debo decirlo...me tomó mucho menos tiempo construírlo en Haskell de lo que me tomó construírlo en Erlang...pero claro...ya lo había hecho antes en Erlang...así que tenía algo de ventaja -;)

En fín...fué totalmente divertido...y podría estar más feliz con el resultado final...Haskell siendo tan puro hace que trabajar con el sea una completa maravilla...

Mucha conversación...aquí está el código fuente...

Roman_Numerals.hs
showRomans :: Int -> IO()
showRomans(num) = do
 putStr $ concat $ get_roman num 0

get_roman :: Int -> Int -> [[Char]]
get_roman num ctr
 | num >= roman = make_roman(roman) ++ get_roman(num - roman) ctr
 | num < roman && num > 0 = get_roman(num) (ctr+1)
 | num <= 0 = ["\n"]
 where roman = roman_keys [] !! ctr

make_roman :: Int -> [[Char]]
make_roman(1) = ["I"]; make_roman(4) = ["IV"]; make_roman(5) = ["V"];
make_roman(9) = ["IX"]; make_roman(10) = ["X"]; make_roman(40) = ["XL"];
make_roman(50) = ["L"]; make_roman(90) = ["XC"]; make_roman(100) = ["C"];
make_roman(400) = ["CD"]; make_roman(500) = ["D"]; make_roman(900) = ["CM"];
make_roman(1000) = ["M"]

roman_keys :: [Int] -> [Int]
roman_keys keys = [1000,900,500,400,100,90,50,40,10,9,5,4,1]

Como siempre...aquí está la imagen...


Después de tantos blogs en tan poco tiempo...creo que me merezco un descanzo, así que podré seguir leyendo el libro de Haskell...puesto que prometí escribir un review...

Saludos,

Blag.
Development Culture.

No comments: