aboutsummaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authortslil <tslil@posteo.de>2026-04-27 18:07:06 +0100
committertslil <tslil@posteo.de>2026-04-27 18:20:24 +0100
commit31de6d4406fa5663ecdbc1341521a61b86b13783 (patch)
tree22e0a848e2e46f9a9e1ec425f2ac117053621d97 /src/main.rs
parentc5ebf74c917b94c8499fa5cd2e125b04ec7529b4 (diff)
flip to agda-like grammar, sets & signatures do not have dots in their fields, but applications of those do as do constructions
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/main.rs b/src/main.rs
index 7d04891..491f6d6 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -20,34 +20,34 @@ fn main() {
let src = r#"
// let X be the set Y, call it Z
-let set X = record { .b : Bool, .n : Nat }
+let set X = record { b : Bool, n : Nat }
let set Y = X
-let set Z = record { .y : Y }
+let set Z = record { y : Y }
// make some elements
let element x : X = { .b = true, .n = 41 }
let element z : Z = { .y = x }
// exercise case matching
-let set Z_or_Float = variant [ z. : Z | f. : Float ]
+let set Z_or_Float = variant [ z : Z | f : Float ]
let element injected : Z_or_Float = z. z
let element check_cases : Nat = case injected of [ z. myz => myz .y .n | f. myf => 2 ]
let signature Graph = theory {
- .Node :: Set,
- .Edge :: (s : Node) (t : Node) -> Set
+ Node :: Set,
+ Edge :: (s : Node) (t : Node) -> Set
}
-// let instance natPoset :: Graph = {
-// .Node = Nat,
-// .Edge = for (s : Nat) (t : Nat), Bool
-// }
-//
-// let element node : set-of(natPoset .Node) = 7
-//
-// let set NatEdges = record {
-// .source: set-of(natPoset .Node),
-// .target: set-of(natPoset .Node),
-// .connected set-of(natPoset .Edge source target)
-// }
+let instance natPoset :: Graph = {
+ .Node = Nat,
+ .Edge = for (s : Nat) (t : Nat), Bool
+}
+
+let element node : set-of(natPoset .Node) = 7
+
+let set NatEdges = record {
+ source: set-of(natPoset .Node),
+ target: set-of(natPoset .Node),
+ connected: set-of(natPoset .Edge source target)
+}
"#;
let programme = parser::parser::program(src);