ruleSet read maybeDefault header = do
    maybeRulesetString <- transMap (simple header) "RU"
    return $ case (maybeRulesetString, maybeRulesetString >>= read) of
        (Nothing, _      ) -> fmap Known maybeDefault
        (Just s , Nothing) -> Just (OtherRuleSet s)
        (_      , Just rs) -> Just (Known rs)
ruleSet read maybeDefault header = do
    maybeRulesetString <- transMap (simple header) "RU"
    return $ case (maybeRulesetString, maybeRulesetString >>= read) of
        (Nothing, _      ) -> fmap Known maybeDefault
        (Just s , Nothing) -> Just (OtherRuleSet s)
        (_      , Just rs) -> Just (Known rs)
ruleSet read maybeDefault header = do
    maybeRulesetString <- transMap (simple header) "RU"
    return $ case (maybeRulesetString, maybeRulesetString >>= read) of
        (Nothing, _      ) -> fmap Known maybeDefault
        (Just s , Nothing) -> Just (OtherRuleSet s)
        (_      , Just rs) -> Just (Known rs)