aboutsummaryrefslogtreecommitdiff
path: root/new-luxc/source/luxc/lang/synthesis.lux
blob: 5fd6a3a81f4a624c2d237bf82a3b64ed75537ee9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(;module:
  lux)

(type: #export (Path' s)
  #PopP
  (#BindP Nat)
  (#BoolP Bool)
  (#NatP Nat)
  (#IntP Int)
  (#DegP Deg)
  (#RealP Real)
  (#CharP Char)
  (#TextP Text)
  (#VariantP (Either Nat Nat))
  (#TupleP (Either Nat Nat))
  (#AltP (Path' s) (Path' s))
  (#SeqP (Path' s) (Path' s))
  (#ExecP s))

(type: #export #rec Synthesis
  #Unit
  (#Bool Bool)
  (#Nat Nat)
  (#Int Int)
  (#Deg Deg)
  (#Real Real)
  (#Char Char)
  (#Text Text)
  (#Variant Nat Bool Synthesis)
  (#Tuple (List Synthesis))
  (#Case Synthesis (Path' Synthesis))
  (#Function Nat Scope Synthesis)
  (#Call Synthesis (List Synthesis))
  (#Recur Nat (List Synthesis))
  (#Procedure Text (List Synthesis))
  (#Relative Int)
  (#Absolute Ident)
  (#Let Nat Synthesis Synthesis)
  (#If Synthesis Synthesis Synthesis)
  (#Loop Nat (List Synthesis) Synthesis))

(type: #export Path (Path' Synthesis))