@@ -173,9 +173,9 @@ reifyTT :: Term -> ElabD Term
173173reifyTT t@(App _ _ _)
174174 | (P _ f _, args) <- unApply t = reifyTTApp f args
175175reifyTT t@(P _ n _)
176− | n == reflm "Erased" = return $ Erased
176+ | n == reflm "Erased" = return Erased
177177reifyTT t@(P _ n _)
178− | n == reflm "Impossible" = return $ Impossible
178+ | n == reflm "Impossible" = return Impossible
179179reifyTT t = fail ("Unknown reflection term: " ++ show t)
180180
181181reifyTTApp :: Name -> [Term] -> ElabD Term
@@ -217,7 +217,7 @@ reifyRaw :: Term -> ElabD Raw
217217reifyRaw t@(App _ _ _)
218218 | (P _ f _, args) <- unApply t = reifyRawApp f args
219219reifyRaw t@(P _ n _)
220− | n == reflm "RType" = return $ RType
220+ | n == reflm "RType" = return RType
221221reifyRaw t = fail ("Unknown reflection raw term in reifyRaw: " ++ show t)
222222
223223reifyRawApp :: Name -> [Term] -> ElabD Raw
@@ -332,9 +332,9 @@ reifyTTBinderApp reif f [t]
332332reifyTTBinderApp _ f args = fail ("Unknown reflection binder: " ++ show (f, args))
333333
334334reifyTTConst :: Term -> ElabD Const
335−reifyTTConst (P _ n _) | n == reflm "StrType" = return $ StrType
336−reifyTTConst (P _ n _) | n == reflm "VoidType" = return $ VoidType
337−reifyTTConst (P _ n _) | n == reflm "Forgot" = return $ Forgot
335+reifyTTConst (P _ n _) | n == reflm "StrType" = return StrType
336+reifyTTConst (P _ n _) | n == reflm "VoidType" = return VoidType
337+reifyTTConst (P _ n _) | n == reflm "Forgot" = return Forgot
338338reifyTTConst t@(App _ _ _)
339339 | (P _ f _, [arg]) <- unApply t = reifyTTConstApp f arg
340340reifyTTConst t = fail ("Unknown reflection constant: " ++ show t)
@@ -343,23 +343,23 @@ reifyTTConstApp :: Name -> Term -> ElabD Const
343343reifyTTConstApp f aty
344344 | f == reflm "AType" = fmap AType (reifyArithTy aty)
345345reifyTTConstApp f (Constant c@(I _))
346− | f == reflm "I" = return $ c
346+ | f == reflm "I" = return c
347347reifyTTConstApp f (Constant c@(BI _))
348− | f == reflm "BI" = return $ c
348+ | f == reflm "BI" = return c
349349reifyTTConstApp f (Constant c@(Fl _))
350− | f == reflm "Fl" = return $ c
350+ | f == reflm "Fl" = return c
351351reifyTTConstApp f (Constant c@(Ch _))
352− | f == reflm "Ch" = return $ c
352+ | f == reflm "Ch" = return c
353353reifyTTConstApp f (Constant c@(Str _))
354− | f == reflm "Str" = return $ c
354+ | f == reflm "Str" = return c
355355reifyTTConstApp f (Constant c@(B8 _))
356− | f == reflm "B8" = return $ c
356+ | f == reflm "B8" = return c
357357reifyTTConstApp f (Constant c@(B16 _))
358− | f == reflm "B16" = return $ c
358+ | f == reflm "B16" = return c
359359reifyTTConstApp f (Constant c@(B32 _))
360− | f == reflm "B32" = return $ c
360+ | f == reflm "B32" = return c
361361reifyTTConstApp f (Constant c@(B64 _))
362− | f == reflm "B64" = return $ c
362+ | f == reflm "B64" = return c
363363reifyTTConstApp f v@(P _ _ _) =
364364 lift . tfail . Msg $
365365 "Can't reify the variable " ++
@@ -389,9 +389,9 @@ reifyIntTy tm = fail $ "The term " ++ show tm ++ " is not a reflected IntTy"
389389reifyTTUExp :: Term -> ElabD UExp
390390reifyTTUExp t@(App _ _ _)
391391 = case unApply t of
392− (P _ f _, [Constant (Str str), Constant (I i)])
392+ (P _ f _, [Constant (Str str), Constant (I i)])
393393 | f == reflm "UVar" -> return $ UVar str i
394− (P _ f _, [Constant (I i)])
394+ (P _ f _, [Constant (I i)])
395395 | f == reflm "UVal" -> return $ UVal i
396396 _ -> fail ("Unknown reflection type universe expression: " ++ show t)
397397reifyTTUExp t = fail ("Unknown reflection type universe expression: " ++ show t)
@@ -487,7 +487,7 @@ reflectTTQuotePattern unq (Proj t i)
487487reflectTTQuotePattern unq Erased
488488 = do erased <- claimTy (sMN 0 "erased") (Var (reflm "TT"))
489489 movelast erased
490− fill $ (Var erased)
490+ fill (Var erased)
491491reflectTTQuotePattern unq Impossible
492492 = lift . tfail . InternalMsg $
493493 "Phase error! The Impossible constructor is for optimization only and should not have been reflected during elaboration."
@@ -1190,14 +1190,17 @@ reflectDatatype (RDatatype tyn tyConArgs tyConRes constrs) =
11901190 , rawList (Var $ tacN "TyConArg") (map reflectConArg tyConArgs)
11911191 , reflectRaw tyConRes
11921192 , rawList (rawTripleTy (Var $ reflm "TTName")
1193− (RApp (Var (sNS (sUN "List") ["List", "Prelude"])) (Var $ tacN "CtorArg"))
1193+ (RApp (Var (sNS (sUN "List") ["List", "Prelude"]))
1194+ (Var $ tacN "CtorArg"))
11941195 (Var $ reflm "Raw"))
1195− [ rawTriple ((Var $ reflm "TTName"),
1196− (RApp (Var (sNS (sUN "List") ["List", "Prelude"])) (Var $ tacN "CtorArg")),
1197− (Var $ reflm "Raw"))
1198− (reflectName cn,
1199− rawList (Var $ tacN "CtorArg") (map reflectCtorArg cargs),
1200− reflectRaw cty)
1196+ [ rawTriple ((Var $ reflm "TTName")
1197+ ,(RApp (Var (sNS (sUN "List") ["List", "Prelude"]))
1198+ (Var $ tacN "CtorArg"))
1199+ ,(Var $ reflm "Raw"))
1200+ (reflectName cn
1201+ ,rawList (Var $ tacN "CtorArg")
1202+ (map reflectCtorArg cargs)
1203+ ,reflectRaw cty)
12011204 | (cn, cargs, cty) <- constrs
12021205 ]
12031206 ]
@@ -1207,11 +1210,17 @@ reflectDatatype (RDatatype tyn tyConArgs tyConRes constrs) =
12071210 RApp (Var $ tacN "TyConIndex") (reflectArg a)
12081211
12091212reflectFunClause :: RFunClause Term -> Raw
1210−reflectFunClause (RMkFunClause lhs rhs) = raw_apply (Var $ tacN "MkFunClause") $ (Var $ reflm "TT") : map reflect [ lhs, rhs ]
1211−reflectFunClause (RMkImpossibleClause lhs) = raw_apply (Var $ tacN "MkImpossibleClause") $ [ Var $ reflm "TT", reflect lhs ]
1213+reflectFunClause (RMkFunClause lhs rhs) = raw_apply (Var $ tacN "MkFunClause")
1214+ $ (Var $ reflm "TT") : map reflect [ lhs, rhs ]
1215+
1216+reflectFunClause (RMkImpossibleClause lhs) = raw_apply (Var $ tacN "MkImpossibleClause")
1217+ [ Var $ reflm "TT", reflect lhs ]
12121218
12131219reflectFunDefn :: RFunDefn Term -> Raw
1214−reflectFunDefn (RDefineFun name clauses) = raw_apply (Var $ tacN "DefineFun") [ Var $ reflm "TT"
1215− , reflectName name
1216− , rawList (RApp (Var $ tacN "FunClause") (Var $ reflm "TT")) (map reflectFunClause clauses)
1217− ]
1220+reflectFunDefn (RDefineFun name clauses) = raw_apply (Var $ tacN "DefineFun")
1221+ [ Var $ reflm "TT"
1222+ , reflectName name
1223+ , rawList (RApp (Var $ tacN "FunClause")
1224+ (Var $ reflm "TT"))
1225+ (map reflectFunClause clauses)
1226+ ]