Fix is planned to be a functional language of Haskell-like syntax and type systems, with the following features:
- Eager evaluation
- Reference counting garbage collection, where it is guaranteed that no cycles will be created.
- Self-referencing expression such as "let f = g f in f" is not permitted and should be written as "fix g".
- Updating uniquely owned object
- For example, the evaluation of "update array idx (+1)" doesn't copy array when reference counter of array is one.
- Type checking
- Add Array
- Do boundary check in read_array and write_array.