# Variable typing. # #[string] str3 = foo #[bool] str3 = false # error: changing str3 type from string to bool #[bool string] str3 = foo # error: multiple variable types: bool, string #[junk] jnk = foo # error: unknown variable attribute junk [string] str1 = bar str1 =+ foo str1 += baz print $str1 str2 = bar [string] str2 =+ foo str2 += baz print $str2 # Value typing. # #v = [bool string] true # error: multiple value types: string, bool #v = [string=junk] true # error: unexpected value for attribute string: junk #[string] var = #var = [bool] true # error: confliction variable var type string and value type bool #var = [string] false #var += [bool] true # error: confliction original value type string and append/prepend value type bool v1a = [uint64] 00 v1b += [uint64] 00 v1c =+ [uint64] 00 print $v1a $v1b $v1c # 0 0 0 v2 = [uint64] 00 v2 = [string] 00 print $v2 # 00 #v3a = [uint64] 00 #v3a += [string] 00 # error: confliction original value type uint64 and append/prepend value type string #v3b = [uint64] 00 #v3b =+ [string] 00 # error: confliction original value type uint64 and append/prepend value type string v4a = 01 v4a += [uint64] 01 print $v4a # 2 v4b = 01 v4b =+ [uint64] 01 print $v4b # 2 v5a = 01 sub/: { v5a += [uint64] 01 print $v5a # 2 } v5b = 01 sub/: { v5b =+ [uint64] 01 print $v5b # 2 } v6 = [uint64 null] v6 += 00 print $v6 # 0 v7 = [string null] v7 += [uint64] 00 print $v7 # 0 print [uint64] 00 # 0 v8 = [uint64] 01 v8 = abc print $v8 # abc ./: