[Haskell-cafe] Roman to Decimal Algorithms

Martijn van Steenbergen martijn at van.steenbergen.nl
Sun Jun 7 14:25:15 EDT 2009


Hi Andrew,

I haven't read your whole message but if shortness is your goal, here 
are some ideas:

Andrew Savige wrote:
> rtoa c = 10^(205558`mod`(ord c)`mod`7)`mod`9995
> 
> I'm not suggesting that magic formulae are useful outside of golf and
> this second rtoa function, though shorter, is much less clear. I might
> add that this particular magic formula appears to be less useful in
> Haskell golf than the other languages because `mod` is five times
> longer than the % operator of the other languages. :)

Why not rename mod like so?

(%)=mod
rtoa c=10^(205558%ord c%7)%9995

> Alternatively, you could write the rtoa function using an approach
> taken from the original HaskellWiki solution:
> 
> rtoa = fromJust . flip lookup (zip "IVXLCDM" [1,5,10,50,100,500,1000])

You can write this as:

Just rtoa=flip lookup (zip "IVXLCDM" [1,5,10,50,100,500,1000])

Which is another few characters shorter. :-)

HTH,

Martijn.



More information about the Haskell-Cafe mailing list