aboutsummaryrefslogtreecommitdiff
path: root/snug-clean/src/Snug/Syntax.dcl
diff options
context:
space:
mode:
authorCamil Staps2023-11-27 19:00:20 +0100
committerCamil Staps2023-11-27 19:00:20 +0100
commit5a3007ea91a3ee57a4fc3e34c0edd59a90b525c3 (patch)
tree3addc1233eb1e80657fa36b6599e3ebe3d097d88 /snug-clean/src/Snug/Syntax.dcl
parentUpdate to base 2.0 (diff)
WIP on code generation for case expressions
Diffstat (limited to 'snug-clean/src/Snug/Syntax.dcl')
-rw-r--r--snug-clean/src/Snug/Syntax.dcl7
1 files changed, 7 insertions, 0 deletions
diff --git a/snug-clean/src/Snug/Syntax.dcl b/snug-clean/src/Snug/Syntax.dcl
index 5246dcd..f6ff0f2 100644
--- a/snug-clean/src/Snug/Syntax.dcl
+++ b/snug-clean/src/Snug/Syntax.dcl
@@ -1,5 +1,7 @@
definition module Snug.Syntax
+from Data.Set import :: Set
+
:: TypeIdent :== String
:: TypeVarIdent :== String
:: ConstructorIdent :== String
@@ -38,3 +40,8 @@ definition module Snug.Syntax
| TypeDef !TypeIdent !Type
| FunDef !SymbolIdent ![(SymbolIdent, Type)] !Type !Expression
| TestDef !String !Type !Expression !String
+
+class usedSymbols a :: !a -> Set SymbolIdent
+instance usedSymbols [a] | usedSymbols a
+instance usedSymbols (a, b) | usedSymbols a & usedSymbols b
+instance usedSymbols CaseAlternative, Expression, Pattern