Operators. I currently have Binary: and or < > <= >= == != + - * / % ++ prefix: not + - I might want: Binary: and then, or else, integer division Prefix: int Suffix: dereference Do I want COND ? IFTRUE : IFFALSE or IFTRUE if COND else IFFALSE Can / NUMBER provide the integer part? What can I use '!' '@' '#' '$' '^' '&' '*' '|' for bit-wise and/or/not/xor != is 'xor' for Boolean I should use & | ~ for bitwise. and or not ~ could be an infix for xor &~ could clear bits What foo= options? += -= *= /= %= &= |= ~= Do I want "#n" to be (1 << n) ?? ++ is concat. What about -- ** // - comment @@ ^^ && || These last two are best avoided. Pointers ... do I need a dereference operator? Normally a pointer refers to the object it references (which isn't a pointer) The only difficulty is a = b If a:foo and b:foo^ then b is dereferenced. If a:foo^ and b:foo then a points to b if a:foo^ and b:foo^ then a points to what b points to So how do you change what a points to? I could have a de-reference operation *a = b; a^ = b but I think I want a structure-changing assignment a @= b then maybe a @@= b does a deep copy What types do operators act one? numbers + - * / % bitsets & | ~ &~ Boolean and or not "and then" "or else" "if .. else" What about and= ?? *= ?? string ++ < > == etc, regexp? strlen? append? character? add to string? Convert to string? are << and >> operators on numbers or bitsets? can I just use "*# or /#" ?? What about error encoding? e.g. a pointer can have nil or other error encoded A range-limited number could have extra codes outside that range. Need to be able to : convert error to type !error test if value is error ?value extract error code value! PROBLEM?? a if c else b could have a natural precedence: A if C else B if q else a if c else b would be A if C else (B if q else (a if c else b)) Hmm.. not what I imagined. But what I imaging suggested that left-association what a op b op c -> (a op b) op c requires that we reduce even when we could shift, ... maybe .... I should leave this until I do precedence.