@@ -1,149 +0,0 @@
1−module Language.Reflection.Tactical
4−import Prelude.Applicative
9−import Language.Reflection
12− Explicit : TTName -> Raw -> Arg
13− Implicit : TTName -> Raw -> Arg
14− Constraint : TTName -> Raw -> Arg
16−data TyDecl : Type where
17− Declare : TTName -> List Arg -> Raw -> TyDecl
19−data FunClause : Type where
20− MkFunClause : (lhs, rhs : Raw) -> FunClause
21− MkImpossibleClause : (lhs : Raw) -> FunClause
23−data FunDefn : Type where
24− DefineFun : TTName -> List FunClause -> FunDefn
27−data Tactical : Type -> Type where
28− -- obligatory control stuff
29− prim__PureTactical : a -> Tactical a
30− prim__BindTactical : {a, b : Type} -> Tactical a -> (a -> Tactical b) -> Tactical b
32− prim__Try : {a : Type} -> Tactical a -> Tactical a -> Tactical a
33− prim__Fail : {a : Type} -> List ErrorReportPart -> Tactical a
35− prim__Env : Tactical (List (TTName, Binder TT))
36− prim__Goal : Tactical (TTName, TT)
37− prim__Holes : Tactical (List TTName)
38− prim__Guess : Tactical (Maybe TT)
40− prim__SourceLocation : Tactical SourceLocation
42− prim__Forget : TT -> Tactical Raw
44− prim__Gensym : String -> Tactical TTName
46− prim__Solve : Tactical ()
47− prim__Fill : Raw -> Tactical ()
48− prim__Focus : TTName -> Tactical ()
49− prim__Unfocus : TTName -> Tactical ()
50− prim__Attack : Tactical ()
52− prim__Rewrite : Raw -> Tactical ()
54− prim__Claim : TTName -> Raw -> Tactical ()
55− prim__Intro : Maybe TTName -> Tactical ()
57− prim__DeclareType : TyDecl -> Tactical ()
58− prim__DefineFunction : FunDefn -> Tactical ()
60− prim__Debug : {a : Type} -> Maybe String -> Tactical a
68−instance Functor Tactical where
69− map f t = prim__BindTactical t (\x => prim__PureTactical (f x))
71−instance Applicative Tactical where
72− pure x = prim__PureTactical x
73− f <*> x = prim__BindTactical f $ \g =>
74− prim__BindTactical x $ \y =>
75− prim__PureTactical $ g y
77−instance Alternative Tactical where
78− empty = prim__Fail [TextPart "empty"]
79− x <|> y = prim__Try x y
81−instance Monad Tactical where
82− x >>= f = prim__BindTactical x f
84−fail : List ErrorReportPart -> Tactical a
85−fail err = prim__Fail err
87−getEnv : Tactical (List (TTName, Binder TT))
90−getGoal : Tactical (TTName, TT)
93−getHoles : Tactical (List TTName)
94−getHoles = prim__Holes
96−getGuess : Tactical (Maybe TT)
97−getGuess = prim__Guess
99−forgetTypes : TT -> Tactical Raw
100−forgetTypes tt = prim__Forget tt
102−gensym : (hint : String) -> Tactical TTName
103−gensym hint = prim__Gensym hint
108−fill : Raw -> Tactical ()
109−fill tm = prim__Fill tm
111−focus : (hole : TTName) -> Tactical ()
112−focus hole = prim__Focus hole
114−unfocus : TTName -> Tactical ()
115−unfocus hole = prim__Unfocus hole
118−attack = prim__Attack
120−claim : TTName -> Raw -> Tactical ()
121−claim n ty = prim__Claim n ty
123−intro : Maybe TTName -> Tactical ()
124−intro n = prim__Intro n
126−||| Find out the present source context for the tactic script
127−getSourceLocation : Tactical SourceLocation
128−getSourceLocation = prim__SourceLocation
130−||| Attempt to solve the current goal with the source code location
131−sourceLocation : Tactical ()
132−sourceLocation = do loc <- getSourceLocation
136−rewriteWith : Raw -> Tactical ()
137−rewriteWith rule = prim__Rewrite rule
139−declareType : TyDecl -> Tactical ()
140−declareType decl = prim__DeclareType decl
142−defineFunction : FunDefn -> Tactical ()
143−defineFunction defun = prim__DefineFunction defun
146−debug = prim__Debug Nothing
148−debugMessage : String -> Tactical a
149−debugMessage msg = prim__Debug (Just msg)