Operator Methods: Difference between revisions
Jump to navigation
Jump to search
Adamcolton (talk | contribs) Created page with "Types can have operator methods. Operators always follow the same precedence and must be immutable. Operators * Add (+Add) * Positive (+Positive) * Concat (+Concat) * Subtrac..." |
Adamcolton (talk | contribs) No edit summary |
||
| Line 20: | Line 20: | ||
For many of these types, function can return two values. For instance on +, the second value is an ok that will return false if the addition overflowed the type. | For many of these types, function can return two values. For instance on +, the second value is an ok that will return false if the addition overflowed the type. | ||
[[Category:Gryphon]] | |||
Revision as of 17:28, 17 September 2019
Types can have operator methods. Operators always follow the same precedence and must be immutable.
Operators
- Add (+Add)
- Positive (+Positive)
- Concat (+Concat)
- Subtract (-Sub)
- Negate (-Neg)
- Index ([])
- logical/bitwise (and, or, not, xor, nor)
- bit (<< >>)
One type cannot define both Concat and Add/Positive.
I'm not sure about type enforcement. It would be clean to say that both inputs to an operator must be the same time (what V does). But that doesn't always work, for instance, you can't add two points. So it might make more sense to have Mathematical compliance. So you must have the following consistency
- A+B=C
- B=C-A
- A=C-B
And probably more into multiplication and exponentiation.
For many of these types, function can return two values. For instance on +, the second value is an ok that will return false if the addition overflowed the type.