module Roman where import Numeric import Maybe import Data.Ratio import Char import Prelude
Roman.safeRead v445 v446 = case ((Data._CharNumeric.readDec v445) v446) of Prelude.[] -> (Prelude.fromInteger (Prelude.Prelude.Real.Prelude.Num (Prelude.Prelude.Integral.Prelude.Real v445))) 0 (Prelude.:) v447 v448 -> case v447 of Prelude.(,) v449 v450 -> v449
Roman.numerals v451 = (Prelude.:) (Prelude.(,) 'I' ((Prelude.fromInteger v451) 1)) ((Prelude.:) (Prelude.(,) 'V' ((Prelude.fromInteger v451) 5)) ((Prelude.:) (Prelude.(,) 'X' ((Prelude.fromInteger v451) 10)) ((Prelude.:) (Prelude.(,) 'L' ((Prelude.fromInteger v451) 50)) ((Prelude.:) (Prelude.(,) 'C' ((Prelude.fromInteger v451) 100)) ((Prelude.:) (Prelude.(,) 'D' ((Prelude.fromInteger v451) 500)) ((Prelude.:) (Prelude.(,) 'M' ((Prelude.fromInteger v451) 1000)) Prelude.[]))))))
Roman.maxmunch v452 v453 = case v453 of Prelude.[] -> Prelude.[] (Prelude.:) v454 v455 -> let Roman.91:95-7:95 = Prelude.span ((Prelude.Prelude.Eq.Prelude.Char.==) v454) v453 Roman.Roman.Prelude.226.these = Roman._LAMBDA480 Roman.91:95-7:95 Roman.Roman.Prelude.227.those = Roman._LAMBDA481 Roman.91:95-7:95 in (Prelude.:) (((Prelude.*) v452) (Data.Maybe.fromJust (Prelude.lookup Prelude.Prelude.Eq.Prelude.Char v454 (Roman.numerals v452))) (Roman.Roman.Prelude.228.length v452 Roman.Roman.Prelude.226.these)) (Roman.maxmunch v452 Roman.Roman.Prelude.227.those)
Roman._LAMBDA481 Roman.91:95-7:95 = case Roman.91:95-7:95 of Prelude.(,) v464 v465 -> v465
Roman._LAMBDA480 Roman.91:95-7:95 = case Roman.91:95-7:95 of Prelude.(,) v462 v463 -> v462
Roman.Roman.Prelude.228.length v456 v457 = case v457 of Prelude.[] -> (Prelude.fromInteger v456) 0 (Prelude.:) v458 v459 -> ((Prelude.+) v456) ((Prelude.fromInteger v456) 1) (Roman.Roman.Prelude.228.length v456 v459)
Roman.fromNumeral v466 v467 v468 v469 = case (((Prelude.<) v467) v468 v469) of Prelude.True -> ((Prelude.-) v466) v469 v468 Prelude.False -> case (((Prelude.>) v467) v468 v469) of Prelude.True -> ((Prelude.+) v466) v469 v468 Prelude.False -> Prelude.error Roman._LAMBDA482
Roman._LAMBDA482 = "Roman: Pattern match failure in function at 54:1-56:16."
Roman.fromRoman = (Prelude..) (Prelude.foldr (Roman.fromNumeral Prelude.Prelude.Num.Prelude.Int Prelude.Prelude.Ord.Prelude.Int) 0) ((Prelude..) (Roman.maxmunch Prelude.Prelude.Num.Prelude.Int) (Prelude.map Data.Char.toUpper))
Roman.subnums = (Prelude.:) (Prelude.(,) 'V' 'I') ((Prelude.:) (Prelude.(,) 'X' 'I') ((Prelude.:) (Prelude.(,) 'L' 'X') ((Prelude.:) (Prelude.(,) 'C' 'X') ((Prelude.:) (Prelude.(,) 'D' 'C') ((Prelude.:) (Prelude.(,) 'M' 'C') Prelude.[])))))
Roman.toNumeral v470 v471 v472 v473 = case v472 of Prelude.(,) v474 v475 -> case v473 of Prelude.(,) v476 v477 -> let Roman.Roman.Prelude.220.tdigit = Data.Maybe.fromMaybe '\NUL' (Prelude.lookup Prelude.Prelude.Eq.Prelude.Char v474 Roman.subnums) in case (((Prelude.>=) v471) v476 v475) of Prelude.True -> Roman.toNumeral v470 v471 v472 (Prelude.(,) (((Prelude.-) v470) v476 v475) ((Prelude.:) v474 v477)) Prelude.False -> case (((Prelude.>=) v471) (((Prelude.+) v470) v476 ((Roman.Roman.Prelude.221.k Roman.Roman.Prelude.220.tdigit) v470)) v475) of Prelude.True -> Prelude.(,) (((Prelude.+) v470) (((Prelude.-) v470) v476 v475) ((Roman.Roman.Prelude.221.k Roman.Roman.Prelude.220.tdigit) v470)) ((Prelude.:) v474 ((Prelude.:) Roman.Roman.Prelude.220.tdigit v477)) Prelude.False -> case Prelude.otherwise of Prelude.True -> Prelude.(,) v476 v477 Prelude.False -> Prelude.error Roman._LAMBDA483 _ -> Prelude.error Roman._LAMBDA483 _ -> Prelude.error Roman._LAMBDA483
Roman._LAMBDA483 = "Roman: Pattern match failure in function at 38:1-43:55."
Roman.Roman.Prelude.221.k Roman.Roman.Prelude.220.tdigit v478 = Data.Maybe.fromMaybe ((Prelude.fromInteger v478) 0) (Prelude.lookup Prelude.Prelude.Eq.Prelude.Char Roman.Roman.Prelude.220.tdigit (Roman.numerals v478))
Roman.toRoman v479 = ((Prelude..) Prelude.reverse Prelude.snd) (Prelude.foldr (Roman.toNumeral Prelude.Prelude.Num.Prelude.Int Prelude.Prelude.Ord.Prelude.Int) (Prelude.(,) v479 Roman._LAMBDA484) (Roman.numerals Prelude.Prelude.Num.Prelude.Int))
Roman._LAMBDA484 = ""