summaryrefslogtreecommitdiff
path: root/src/Example.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Example.hs')
-rw-r--r--src/Example.hs12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/Example.hs b/src/Example.hs
index d1d04e3..fb4e851 100644
--- a/src/Example.hs
+++ b/src/Example.hs
@@ -1,6 +1,8 @@
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE OverloadedLabels #-}
+{-# LANGUAGE PolyKinds #-}
+{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Example where
@@ -14,6 +16,16 @@ import Simplify
-- ppExpr senv5 $ simplifyN 20 $ let d = descr5 SMerge SMerge in freezeRet d (drev d ex5) (EConst ext STF32 1.0)
+type family MergeEnv env where
+ MergeEnv '[] = '[]
+ MergeEnv (t : ts) = "merge" : MergeEnv ts
+
+mergeDescr :: KnownEnv env => Descr env (MergeEnv env)
+mergeDescr = go knownEnv
+ where go :: SList STy env -> Descr env (MergeEnv env)
+ go SNil = DTop
+ go (t `SCons` env) = go env `DPush` (t, SMerge)
+
bin :: SOp (TPair a b) c -> Ex env a -> Ex env b -> Ex env c
bin op a b = EOp ext op (EPair ext a b)