aboutsummaryrefslogtreecommitdiffstats
path: root/SPEC.md
diff options
context:
space:
mode:
Diffstat (limited to 'SPEC.md')
-rw-r--r--SPEC.md139
1 files changed, 0 insertions, 139 deletions
diff --git a/SPEC.md b/SPEC.md
deleted file mode 100644
index f05ac9c..0000000
--- a/SPEC.md
+++ /dev/null
@@ -1,139 +0,0 @@
-# Sylt-lang
------------
-The language specification, also known as "the less fun" document.
-
-For goals and the like, see the README.md file.
-
-## The syntax by example
-
-I choose to include programs here, that should be valid
-in Sylt programs if all goes to plan.
-
-```sylt
-a := 1
-b : int = a
-print(b) // 1
-```
-Here we can see variable declaration, types and
-the calling of simple functions.
-
-### Definition statement
-```sylt
-a := 1 // Define a to be 1, automatically infers int as type.
-b : int = 1 // Define b to be 1, explicitly as int.
-c : int = 0.4 // A compilation error, since types don't match.
-
-// The definition of a function, that takes
-// one argument and returns an integer value.
-d := fn a: int -> int {
- ret a + 1
-}
-
-// Constant
-a :: 1
-a = 2 // This is illegal
-
-// Destructuring a tuple is allowed, after the definiton
-// e = 1, f = 2, g = 3.
-// If the number of variables doesn't match the length
-// of the tuple, that would raise a compilation error.
-e, f, g := (1, 2, 3)
-
-q := 1
-q := 1 // You are not allowed to re-declare variables
-
-z := 1
-{
- z := z // This is allowed since this inner z is a differnt variable.
-}
-```
-
-### If-statements
-```sylt
-// Basic if-statements
-if some_boolean_value {
- do_on_true()
-}
-
-// With else statement
-if some_boolean_value {
- do_on_true()
-} else {
- do_on_false()
-}
-
-// If-else statements
-if some_boolean_value {
- do_on_true()
-} else if some_other_value {
- do_on_second_true()
-}
-```
-
-### For-loops
-```sylt
-// 'Normal' For-loop
-// Would print numbers 0-9
-for i := 0, i < 10, i++ {
- print(i)
-}
-
-// 'Enhanced' For-loop
-// Would print the numbers 1, 2, 3 and 4
-// More precisely, all in the collection
-// specified after the 'in' keyword.
-for i in (1, 2, 3, 4) {
- print(i)
-}
-
-// 'Infinite' For-loop
-// The loop would run forever, or until
-// a piece of control flow causes it to jump
-// out of the loop. Here we use 'break'.
-for {
- print(1)
- break;
-}
-
-```
-
-### Functions
-All functions are values.
-```sylt
-// Declare and create the function
-f :: fn {
- print "A"
-}
-// Semantically equivalent
-f()
-f!
-
-// Declare and create the function
-f :: fn a:int -> int {
- print a
- ret a + 1
-}
-// Semantically equivalent
-f 1
-f(1)
-
-// Closures exist
-q := 1
-g :: fn -> int {
- ret q // Here the variable 'q' is captured
-}
-q = 2
-print g! // prints 2
-
-// Supports heigher order functions
-h :: fn -> fn -> int {
- ret fn -> int { ret 2 }
-}
-print h()() // prints 2
-```
-
-### Special syntax
-```sylt
-<!> // The unreachable statement, it should never be executed
-1 <=> 1 // Asserts equality, so the program crashes if 1 != 1
-```