/* Player :: struct id : int name: String compound_of_struct: Player = { id = 10, name = "Guy", } second_compound_syntax := :Player{...} max_folding :: (a: int, b: int) { if a > b { return a; } return b; } max :: (a: int, b: int) if a > b then return a return b ; - treated as new line { and } - treated as new line scope and end of new line scope */ //----------------------------------------------------------------------------- // Function types //----------------------------------------------------------------------------- test_function :: (thing: int): ^int function_type: (thing: int): ^int = test_function const_function_alias :: test_function null_function: (t: int): ^int = null //----------------------------------------------------------------------------- // Booleans //----------------------------------------------------------------------------- boolean: bool = true value_of_bool: int = cast(boolean: int) //----------------------------------------------------------------------------- // Nulls //----------------------------------------------------------------------------- int_null: int = null str_null: String = null bool_null: bool = null //----------------------------------------------------------------------------- // Compound expressions //----------------------------------------------------------------------------- array1: [4]int = {1,2,3,4} array2: [32]int = {1,2,3,4} array3: [32]int = { [0] = null, [1] = 1, [31] = 31, } array_item := array1[0] array_item_imp: int = array2[2] //----------------------------------------------------------------------------- // Pointers //----------------------------------------------------------------------------- pointer_decl : ^int variable_from_deref: int = pointer_decl^ pointer_from_var : ^int = ^variable_from_deref boolean_pointer := ^boolean //----------------------------------------------------------------------------- // Implicit type //----------------------------------------------------------------------------- implicit_int :: 10 implicit_str :: "Hello world" //----------------------------------------------------------------------------- // Pointers //----------------------------------------------------------------------------- pointer1: ^int = null pointer2: ^int = pointer1 pointer3: ^^int = null //----------------------------------------------------------------------------- // String types //----------------------------------------------------------------------------- string1 :: "Test" string2 :: string1 //----------------------------------------------------------------------------- // Constant int variables //----------------------------------------------------------------------------- thing0 :: 10 thing1 :: thing0 + 11 thing2 :: thing1 + 20 combin :: thing0 + thing1 + thing2