summaryrefslogtreecommitdiff
path: root/src/Script/Expr/Class.hs
diff options
context:
space:
mode:
authorRoman Smrž <roman.smrz@seznam.cz>2025-02-27 16:39:04 +0100
committerRoman Smrž <roman.smrz@seznam.cz>2025-02-27 21:00:40 +0100
commit13f549d68fb235522ae98bf04d2e09abdb1442ea (patch)
tree0d7c3c7e4ac58d6f8ee55a3e98ecac0ca0b1a317 /src/Script/Expr/Class.hs
parent461a67cf2e6bea76dd7ad3e1636b68d061002e0d (diff)
Refactor script/expression related code to multiple modules
Diffstat (limited to 'src/Script/Expr/Class.hs')
-rw-r--r--src/Script/Expr/Class.hs15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/Script/Expr/Class.hs b/src/Script/Expr/Class.hs
index 590b99c..64b4241 100644
--- a/src/Script/Expr/Class.hs
+++ b/src/Script/Expr/Class.hs
@@ -24,6 +24,14 @@ class Typeable a => ExprType a where
exprEnumerator :: proxy a -> Maybe (ExprEnumerator a)
exprEnumerator _ = Nothing
+
+data RecordSelector a = forall b. ExprType b => RecordSelector (a -> b)
+
+data ExprListUnpacker a = forall e. ExprType e => ExprListUnpacker (a -> [e]) (Proxy a -> Proxy e)
+
+data ExprEnumerator a = ExprEnumerator (a -> a -> [a]) (a -> a -> a -> [a])
+
+
instance ExprType Integer where
textExprType _ = T.pack "integer"
textExprValue x = T.pack (show x)
@@ -52,10 +60,3 @@ instance ExprType a => ExprType [a] where
textExprValue x = "[" <> T.intercalate ", " (map textExprValue x) <> "]"
exprListUnpacker _ = Just $ ExprListUnpacker id (const Proxy)
-
-
-data RecordSelector a = forall b. ExprType b => RecordSelector (a -> b)
-
-data ExprListUnpacker a = forall e. ExprType e => ExprListUnpacker (a -> [e]) (Proxy a -> Proxy e)
-
-data ExprEnumerator a = ExprEnumerator (a -> a -> [a]) (a -> a -> a -> [a])