Specifications

TYPES

primitive:
int, flt, chr, bol

container:
arr, seq, map, mat, set, any

complex:
num, str

special:
any, ptr, err

DEFINITIONS

use name: type = { modulename }
def name: type = { body }

VARIABLES

var[opt] name: type = value	
var[opt] name: type = value, othername: type = value
var name: type = value
var[opt] name = value
var[opt] name: (type, type,...) = {value[0], value[1],...}
var[opt] name = value | {bool} | othervalue

FUNCTIONS

fun name(parameters): type = return
fun[opt] name(input output relation): type = {return}
fun[opt] name(parameters): type = {yeild}
fun[opt] name(a: list; lambda): list = {return}
fun 'operator'(two parameters max): type = {return}
fun (structname)name(parameters): type = return

STRUCTURES

typ[opt] name: type[opt] = {description}
typ[opt] name(inheritance): type[opt] = {description}

GENERICS

fun[opt] name(T: gen)(a: T, b: T): var[opt] = { body }
typ[opt] name(T: gen)(): obj[opt] = { body }