]> ocean-lang.org Git - ocean-D/blobdiff - Ocean-operators
updates
[ocean-D] / Ocean-operators
diff --git a/Ocean-operators b/Ocean-operators
new file mode 100644 (file)
index 0000000..8a5fa36
--- /dev/null
@@ -0,0 +1,76 @@
+
+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?
+
+
+   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!