-- |Does an evaluated expression equal ture?
holds :: Env -> Expr -> ThrowError Bool
holds env e = do
    case eval env e of
        Right (BoolExpr True) -> return $ True
        Right (BoolExpr False) -> return $ False
        Right e -> throwError $ ConditionalNotABool e
        Left error -> throwError $ error
holds :: Env -> Expr -> ThrowError Bool
holds env e = do
    case eval env e of
        Right (BoolExpr True) -> return $ True
        Right (BoolExpr False) -> return $ False
        Right e -> throwError $ ConditionalNotABool e
        Left error -> throwError $ error
holds env e = do
    case eval env e of
        Right (BoolExpr True) -> return $ True
        Right (BoolExpr False) -> return $ False
        Right e -> throwError $ ConditionalNotABool e
        Left error -> throwError $ error