@@ -1701,6 +1701,9 @@ runTactical fc env tm = do tm' <- eval tm
1701 new_tyDecls e }
1701 new_tyDecls e }
1702 aux <- getAux
1702 aux <- getAux
1703 returnUnit
1703 returnUnit
1704+ | n == tacN "prim__DefineFunction", [decl] <- args
1704 | n == tacN "prim__Debug", [ty, msg] <- args
1707 | n == tacN "prim__Debug", [ty, msg] <- args
1705 = do let msg' = fromTTMaybe msg
1708 = do let msg' = fromTTMaybe msg
1706 case msg' of
1709 case msg' of
@@ -2879,6 +2882,22 @@ reifyTyDecl (App (App (App (P (DCon _ _ _) n _) tyN) args) ret)
2879 reifyRArg aTm = fail $ "Couldn't reify " ++ show aTm ++ " as an RArg."
2882 reifyRArg aTm = fail $ "Couldn't reify " ++ show aTm ++ " as an RArg."
2880reifyTyDecl tm = fail $ "Couldn't reify " ++ show tm ++ " as a type declaration."
2883reifyTyDecl tm = fail $ "Couldn't reify " ++ show tm ++ " as a type declaration."
2885+reifyFunDefn :: Term -> ElabD RFunDefn
2886+reifyFunDefn (App (App (P _ n _) fnN) clauses)
2887+ | n == tacN "DefineFun" =
2888+ do fnN' <- reifyTTName fnN
2889+ clauses' <- case unList clauses of
2890+ Nothing -> fail $ "Couldn't reify " ++ show clauses ++ " as a clause list"
2891+ Just cs -> mapM reifyC cs
2892+ return $ RDefineFun fnN' clauses'
2893+ where reifyC :: Term -> ElabD RFunClause
2894+ reifyC (App (App (P (DCon _ _ _) n _) lhs) rhs)
2895+ | n == tacN "MkFunClause" = liftM2 RMkFunClause
2898+ reifyC tm = fail $ "Couldn't reify " ++ show tm ++ " as a clause."
2899+reifyFunDefn tm = fail $ "Couldn't reify " ++ show tm ++ " as a function declaration."
2882envTupleType :: Raw
2901envTupleType :: Raw
2883envTupleType
2902envTupleType
2884 = raw_apply (Var pairTy) [ (Var $ reflm "TTName")
2903 = raw_apply (Var pairTy) [ (Var $ reflm "TTName")