Gauntlet Documentation
  • 🏠Welcome
  • πŸ…Getting Started
    • 🧠Introduction To Gauntlet
  • ‼️Read before Proceeding
  • ⬇️Installation
  • πŸ‘¨β€πŸ’»VSCode Extension
  • πŸ“šBasics
    • πŸ’¨Running Gauntlet
    • πŸ“„File Setup & Hello World
  • πŸ” Scope Variables
  • πŸ–ΌοΈConstants
  • 🧩Functions
  • ↔️If Statements
  • πŸ”‘Ternary Operator
  • πŸ’ Switch-Case
  • πŸ“©Select-Case
  • ➰Loops
  • πŸ“Structs
  • 🧱Interfaces
  • πŸͺͺAliases
  • πŸ“ŽMethods
  • πŸ¦™Lambdas
  • πŸ•ΈοΈMiscellaneous
  • ⚑Advanced Features
    • πŸ”€When-Cases
    • 🚰Pipes
    • ⁉️Try-Statements
    • 🎭Force-Statements
    • 🌯Wrapper Types
Powered by GitBook
On this page
  • Line Comments
  • Syntax
  • Working Example
  • Array Literal
  • Syntax
  • Working Example
  • Slice Literal
  • Syntax
  • Working Example
  • Map Literal
  • Syntax
  • Working Example
  • Indexing
  • Syntax
  • Working Example
  • Slicing
  • Syntax:
  • Working Example
  • Tuples
  • Syntax
  • Working Example
  • Type Assertion
  • Syntax
  • Working Example
  • Type Conversion
  • Syntax
  • Working Example
  • Goroutines
  • Syntax
  • Working Example
  • Defer
  • Syntax
  • Working Example
  • Pointers & Dereferencing
  • Pointer Syntax
  • Dereferencing Syntax
  • Working Example
  • Sending and Receiving with Channels
  • Sending Syntax
  • Receiving Syntax
  • Working Example
  • Negated Expression
  • Syntax
  • Working Example
Export as PDF

Miscellaneous

This page documents the part of the language that were not "big" enough to warrant an entire page.

Line Comments

Syntax

// Comment here

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  fmt.println("Hello world!") // This is a comment
}
package main

import fmt "fmt"

func main() {
	fmt.Println("Hello world!")

}
Hello world!

At this time, block comments are not supported

Array Literal

You can use an array literal to construct an array.

Syntax

[<array length>]<Array Type>{<expr>, <expr>, ...}

-OR-

[...]<Array Type>{<key expr> : <value expr>, ...}

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let goodLanguages = [...]String{"Gauntlet", "Go", "F#"}
  let badLanguages = [3]String{"Java", "PHP", "C#"}

  fmt.println("Good languages:")
  fmt.println(goodLanguages)
  fmt.println("Bad languages:")
  fmt.println(badLanguages)
}
package main

import fmt "fmt"

func main() {
	goodLanguages :=
		[...]string{"Gauntlet", "Go", "F#"}
	badLanguages :=
		[3]string{"Java", "PHP", "C#"}
	fmt.Println("Good languages:")
	fmt.Println(goodLanguages)
	fmt.Println("Bad languages:")
	fmt.Println(badLanguages)
	// Eliminates any 'unused variable' errors
	_, _ = badLanguages, goodLanguages

}
Good languages:
[Gauntlet Go F#]
Bad languages:
[Java PHP C#]

Slice Literal

You can use a slice literal to construct a slice.

Syntax

[]<Slice type>{<expr1>, <expr2> ...}

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let first5Numbers = []Int{1, 2, 3, 4, 5} 
  fmt.println("The first 5 numbers are:")
  fmt.println(first5Numbers)
}
package main

import fmt "fmt"

func main() {
	first5Numbers := []int{1, 2, 3, 4, 5}
	fmt.Println("The first 5 numbers are:")
	fmt.Println(first5Numbers)
	// Eliminates any 'unused variable' errors
	_ = first5Numbers

}
The first 5 numbers are:
[1 2 3 4 5]

Map Literal

Map literals can be used to construct maps

Syntax

[<Key Type>]<Value Type>{<key expr> : <value expr>, ...]

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  

  let grades = map[String]Int{
    "Bob" : 80
    "Joe" : 75
    "Josh" : 90
  }

  fmt.println("Bob's grade was: ")
  fmt.println(grades["Bob"])


}
package main

import fmt "fmt"

func main() {
	grades := map[string]int{"Bob": 80, "Joe": 75, "Josh": 90}
	fmt.Println("Bob's grade was: ")
	fmt.Println(grades["Bob"])
	// Eliminates any 'unused variable' errors
	_ = grades

}
Bob's grade was: 
80

Indexing

The indexing operator can be used on arrays, slices, strings, maps, and pointers to arrays

Syntax

<expr>[expr>]

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let shoppingList = [...]String{"Bananna", "Orange", "Apples"}
  fmt.println("The first thing I want to buy when I get to the store is:")
  fmt.println(shoppingList[1])

  let streamingPasswords = map[String]String{
    "Netflix" : "net123",
    "Hulu" : "hulu5"
    "Disney+" : "Disney10"
  }

  fmt.println("The password to my Disney+ account is:")
  fmt.println(streamingPasswords["Disney+"])


}
package main

import fmt "fmt"

func main() {
	shoppingList :=
		[...]string{"Bananna", "Orange", "Apples"}
	fmt.Println("The first thing I want to buy when I get to the store is:")
	fmt.Println(shoppingList[1])
	streamingPasswords := map[string]string{"Netflix": "net123", "Hulu": "hulu5", "Disney+": "Disney10"}
	fmt.Println("The password to my Disney+ account is:")
	fmt.Println(streamingPasswords["Disney+"])
	// Eliminates any 'unused variable' errors
	_, _ = shoppingList, streamingPasswords

}
The first thing I want to buy when I get to the store is:
Orange
The password to my Disney+ account is:
Disney10

Slicing

Slicing can only be done on strings, slices, and arrays

Syntax:

<expr>[<start expr> : <end expr>]

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let statement = "I am a human being who is loved and cared for"
  let truePart = statement[0:18]
  fmt.println(truePart)
}
package main

import fmt "fmt"

func main() {
	statement := "I am a human being who is loved and cared for"
	truePart := statement[0:18]
	fmt.Println(truePart)
	// Eliminates any 'unused variable' errors
	_, _ = statement, truePart

}
I am a human being

Tuples

Syntax

(<expr>, <expr>, <expr>, etc)

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let a, b, c, d = (1, 2, 3, 4)
  fmt.println("a is:")
  fmt.println(a)
  fmt.println("b is:")
  fmt.println(b)
  fmt.println("c is:")
  fmt.println(c)
  fmt.println("d is:")
  fmt.println(d)
}
package main

import fmt "fmt"

func main() {
	a, b, c, d := 1, 2, 3, 4
	fmt.Println("a is:")
	fmt.Println(a)
	fmt.Println("b is:")
	fmt.Println(b)
	fmt.Println("c is:")
	fmt.Println(c)
	fmt.Println("d is:")
	fmt.Println(d)
	// Eliminates any 'unused variable' errors
	_, _, _, _ = a, b, c, d

}
a is:
1
b is:
2
c is:
3
d is:
4

Type Assertion

Syntax

<identifier> typeassert <Type>

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let Any a = 1
  let b = a typeassert Int
  fmt.println(b)
}
package main

import fmt "fmt"

func main() {
	var a any = 1
	b := a.(int)
	fmt.Println(b)
	// Eliminates any 'unused variable' errors
	_, _ = a, b

}
1

Type Conversion

Syntax

(<Type>)(<expr>)

Working Example

package main

import "fmt" as fmt

wrapper Int Dollar

fun Unit main() {
  let dollars = Dollar(10)
  let intVersion = (Int)(dollars)
  fmt.println("I have this much money:")
  fmt.println(intVersion)
}
package main

import fmt "fmt"

type dollar int

func main() {
	dollars := dollar(10)
	intVersion := int(dollars)
	fmt.Println("I have this much money:")
	fmt.Println(intVersion)
	// Eliminates any 'unused variable' errors
	_, _ = dollars, intVersion

}
I have this much money:
10

Goroutines

Syntax

go {
    <go content>
}

Working Example

package main

import "fmt" as fmt
import "time" as time

fun Unit main() {
  go {
    fmt.println("Hello from Gauntlet!")
  }
  time.sleep(1 * time.second)
  fmt.println("Main function has ended")
}
package main

import fmt "fmt"
import time "time"

func main() {
	go (func() {
		fmt.Println("Hello from Gauntlet!")

	})()
	time.Sleep(1 * time.Second)
	fmt.Println("Main function has ended")

}
Hello from Gauntlet!
Main function has ended

Defer

Syntax

defer {
    <block body>
}

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  defer {
    fmt.println("World!")
  }
  fmt.println("Hello")
}
package main

import fmt "fmt"

func main() {
	defer (func() {
		fmt.Println("World!")
	})()
	fmt.Println("Hello")

}
Hello
World!

Pointers & Dereferencing

Pointer Syntax

&<expr>

Dereferencing Syntax

*<expr>

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let x = 10
	let ptr = &x 
  *ptr = 20
  fmt.println(x)
}
package main

import fmt "fmt"

func main() {
	x := 10
	ptr := &x
	*ptr = 20
	fmt.Println(x)
	// Eliminates any 'unused variable' errors
	_, _ = ptr, x

}
20

Sending and Receiving with Channels

Sending Syntax

<channel name> <- <expr>

Receiving Syntax

<-<channel name>

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let ch = make(chan String)

	go {
		ch <- "Hello from goroutine!"
	}

	let msg = <-ch
	fmt.println(msg)
}
package main

import fmt "fmt"

func main() {
	ch := make(chan string)
	go (func() {
		ch <- "Hello from goroutine!"

	})()
	msg := <-ch
	fmt.Println(msg)
	// Eliminates any 'unused variable' errors
	_, _ = ch, msg

}
Hello from goroutine!

Negated Expression

Syntax

!<expr>

Working Example

package main

import "fmt" as fmt

fun Unit main() {
  let myValue = false
  let myNegatedValue = !myValue
  
  fmt.println("myValue:")
  fmt.println(myValue)
  fmt.println("myValue but negated:")
  fmt.println(myNegatedValue)
}
package main

import fmt "fmt"

func main() {
	myValue := false
	myNegatedValue := !myValue
	fmt.Println("myValue:")
	fmt.Println(myValue)
	fmt.Println("myValue but negated:")
	fmt.Println(myNegatedValue)
	// Eliminates any 'unused variable' errors
	_, _ = myNegatedValue, myValue

}
myValue:
false
myValue but negated:
true
PreviousLambdasNextWhen-Cases

Last updated 7 days ago

πŸ•ΈοΈ