aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang.lux
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--new-luxc/source/luxc/lang.lux44
1 files changed, 44 insertions, 0 deletions
diff --git a/new-luxc/source/luxc/lang.lux b/new-luxc/source/luxc/lang.lux
new file mode 100644
index 000000000..0c5c97192
--- /dev/null
+++ b/new-luxc/source/luxc/lang.lux
@@ -0,0 +1,44 @@
+(;module:
+ lux)
+
+(type: #export (Pattern a) Void)
+
+(type: #export Primitive
+ #Unit
+ (#Bool Bool)
+ (#Nat Nat)
+ (#Int Int)
+ (#Deg Deg)
+ (#Real Real)
+ (#Char Char)
+ (#Text Text))
+
+(type: #export Reference
+ (#Relative Ref)
+ (#Absolute Ident))
+
+(type: #export (Structure a)
+ (#Variant Nat Bool a)
+ (#Tuple (List a))
+ (#Case (Pattern a))
+ (#Function Scope a)
+ (#Call a (List a))
+ (#Procedure Text (List a)))
+
+(type: #export (Analysis' Analysis)
+ (#Primitive Primitive)
+ (#Structure (Structure Analysis))
+ (#Reference Reference))
+
+(type: #export #rec Analysis
+ (Meta [Type Cursor]
+ (Analysis' Analysis)))
+
+(type: #export Synthesis
+ Unit)
+
+(type: #export Eval
+ (-> Type AST (Lux Top)))
+
+(type: #export Analyser
+ (-> Eval AST (Lux Analysis)))