operator overload
This commit is contained in:
parent
fdaf8d8661
commit
4abe22bcf2
@ -21,6 +21,11 @@ for simplicity reasons:
|
|||||||
* method override check modulo variable renaming.
|
* method override check modulo variable renaming.
|
||||||
* more complicated type guard
|
* more complicated type guard
|
||||||
|
|
||||||
|
## Running Example
|
||||||
|
```bash
|
||||||
|
python main.py example/a.py
|
||||||
|
```
|
||||||
|
|
||||||
## Files
|
## Files
|
||||||
All files named `test_xxx` are used for inspecting the result of algorithms, and
|
All files named `test_xxx` are used for inspecting the result of algorithms, and
|
||||||
can be ignored for now.
|
can be ignored for now.
|
||||||
@ -198,5 +203,31 @@ This would fail. From the first argument, we have `A -> A`, and from the second
|
|||||||
argument we need `A -> B`. In general, we may have `A != B`, so there is no
|
argument we need `A -> B`. In general, we may have `A != B`, so there is no
|
||||||
substitution that meets the requirement and the type check failed.
|
substitution that meets the requirement and the type check failed.
|
||||||
|
|
||||||
## Operator Override
|
## Operator Overloading
|
||||||
|
Most operations are actually implemented via operator overloading.
|
||||||
|
We currently support:
|
||||||
|
* Normal:
|
||||||
|
* `__init__`
|
||||||
|
* Comparison:
|
||||||
|
* `__lt__`
|
||||||
|
* `__le__`
|
||||||
|
* `__gt__`
|
||||||
|
* `__ge__`
|
||||||
|
* `__eq__`
|
||||||
|
* `__ne__`
|
||||||
|
* Arithmetic:
|
||||||
|
* `__add__`
|
||||||
|
* `__sub__`
|
||||||
|
* `__mul__`
|
||||||
|
* `__matmul__`
|
||||||
|
* `__truediv__`
|
||||||
|
* `__floordiv__`
|
||||||
|
* `__mod__`
|
||||||
|
* `__pow__`
|
||||||
|
* `__lshift__`
|
||||||
|
* `__rshift__`
|
||||||
|
* `__and__`
|
||||||
|
* `__or__`
|
||||||
|
* `__xor__`
|
||||||
|
* `__neg__`
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user