@@ -2,6 +2,8 @@
3module Idris.DSL where
3module Idris.DSL where
5+import Data.Generics.Uniplate.Data (transform)
5import Idris.AbsSyntax
7import Idris.AbsSyntax
7import Idris.Core.TT
9import Idris.Core.TT
@@ -13,9 +15,17 @@ import Debug.Trace
13debindApp :: SyntaxInfo -> PTerm -> PTerm
15debindApp :: SyntaxInfo -> PTerm -> PTerm
14debindApp syn t = debind (dsl_bind (dsl_info syn)) t
16debindApp syn t = debind (dsl_bind (dsl_info syn)) t
18+dslify :: SyntaxInfo -> IState -> PTerm -> PTerm
19+dslify syn i = transform dslifyApp
21+ dslifyApp (PApp fc (PRef _ f) [a])
22+ | [d] <- lookupCtxt f (idris_dsls i)
23+ = desugar (syn { dsl_info = d }) i (getTm a)
16desugar :: SyntaxInfo -> IState -> PTerm -> PTerm
26desugar :: SyntaxInfo -> IState -> PTerm -> PTerm
17−desugar syn i t = let t' = expandDo (dsl_info syn) t in
27+desugar syn i t = let t' = expandDo (dsl_info syn) t
18− t' -- addImpl i t'
28+ in dslify syn i t'
20mkTTName :: FC -> Name -> PTerm
30mkTTName :: FC -> Name -> PTerm
21mkTTName fc n =
31mkTTName fc n =