Advertisement
Guest User

rom2num in Haskell

a guest
Apr 3rd, 2012
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import Control.Monad
  2. import Data.List
  3.  
  4. rom2num :: String -> Maybe Integer
  5. rom2num roman = return roman >>= liftM (groupBy (<)) . sequence . map romanLetter >>= liftM sum . sequence . map parseRoll
  6.   where
  7.     parseRoll [ num ]      = Just num
  8.     parseRoll [ pre, num ] = Just (num - pre)
  9.     parseRoll _            = Nothing
  10.     romanLetter x = lookup x $ zip "IVXLCDM" [1, 5, 10, 50, 100, 500, 1000]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement