The main fundamental feature of Argentum is its reference-based data model, which not only ensures memory safety, like in Java-Rust-Go, but also completely prevents leaks.
But aside from this feature, Argentum has many other interesting aspects, including ultra-fast dynamic type casts and interface method calls, modularity, 'microservice'-style multithreading, and control structures based on the optional type. These series of publications is focused on the latter feature.
- In Argentum, there's no/only ternary operator `A?B:C`
- Argentum has no statements, only expressions
- Why Argentum uses "=" to declare and ":=" to assign variables
- There is no "bool" in Argentum
- Argentum has no null pointers
- Named If
- Variable declarations inside ifs and Truthy/Falsy problem
- Argentum optionals and Type Casting
- Argentum Optionals and Weak references
- Why Argentum is free from index-OOB exceptions
- Nested Optionals, &&, || and Maybe-Monad
Bottom line:
Argentum uses familiar operators for conditions and blocks, but by employing the optional data type instead of bool
, it adds a new dimension - they not only define the control, flow but also carry-over data. As a result, the syntax is simplified, expressions become more concise and expressive.
Argentum introduces no new constructs; on the contrary, duplications are removed.
Argentum simplifies and enforces checks for null, weak references, type conversion results, indexes, and container keys, making these checks a natural part of the business logic rather than exception handlers.
The internal representation of optional types is free for all pointers and the majority of value types.