diff options
author | Roman Smrž <roman.smrz@seznam.cz> | 2025-02-27 16:39:04 +0100 |
---|---|---|
committer | Roman Smrž <roman.smrz@seznam.cz> | 2025-02-27 21:00:40 +0100 |
commit | 13f549d68fb235522ae98bf04d2e09abdb1442ea (patch) | |
tree | 0d7c3c7e4ac58d6f8ee55a3e98ecac0ca0b1a317 /src/Script/Expr/Class.hs | |
parent | 461a67cf2e6bea76dd7ad3e1636b68d061002e0d (diff) |
Refactor script/expression related code to multiple modules
Diffstat (limited to 'src/Script/Expr/Class.hs')
-rw-r--r-- | src/Script/Expr/Class.hs | 15 |
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]) |