]> ocean-lang.org Git - ocean-D/blobdiff - Ocean-operators
updates
[ocean-D] / Ocean-operators
index 8a5fa36cd370f59c7bf9cdd518b8245bcbbd472a..d70058b19df36c9832cc463ab6f9b2cd4bf8aeeb 100644 (file)
@@ -67,6 +67,9 @@ What types do operators act one?
    string   ++  < > == etc,  regexp? strlen? append?
    character?  add to string?  Convert to string?
 
    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.
 
    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.
@@ -74,3 +77,49 @@ What types do operators act one?
       convert error to type     !error
       test if value is error    ?value
       extract error code        value!
       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.
+
+--------------------------
+
+Thinking about bit operators.
+
+#foo  is 2^foo
+So #12-#4 is
+    1000000000000 -
+            10000
+=    111111110000
+which is bits 4 thru 11
+
+I'm wondering if it is useful to have a field-select operator,
+which could be '#' as infix (rather than prefix) so
+
+  var # field
+
+would be an lval which can only modify the selected bits
+
+  var # #12-#4 = #6-#4
+would clear bits 6-11.  Doesn't actually read very well, does it?
+Probably better to use field syntax, with a way to declare fields for an int.
+This would be a record.
+
+Still.
+   var &~= #4
+   var |= #4
+to clear and set bits looks OK.
+But ... what syntax do I want for test-and-set?  More genericly cmpxchg.
+An operator that modifies a variable is something I wanted to avoid.
+  var ? oldval = newval
+could 'use false' if it fails.