parseExprRule :: String -> Either ParseError ExprRule
parseExprRule str =
    case parseExprPred str of
        Left err -> Left err
        Right (expr, pred, state) -> Right ExprRule {
            exprRuleName = "rule",
            exprRuleExpr = expr,
            exprRulePred = pred,
            exprRuleBindings = ruleBindings state
            }
parseExprRule :: String -> Either ParseError ExprRule
parseExprRule str =
    case parseExprPred str of
        Left err -> Left err
        Right (expr, pred, state) -> Right ExprRule {
            exprRuleName = "rule",
            exprRuleExpr = expr,
            exprRulePred = pred,
            exprRuleBindings = ruleBindings state
            }
parseExprRule str =
    case parseExprPred str of
        Left err -> Left err
        Right (expr, pred, state) -> Right ExprRule {
            exprRuleName = "rule",
            exprRuleExpr = expr,
            exprRulePred = pred,
            exprRuleBindings = ruleBindings state
            }