Category Features

Strings and Cursors

In argentum strings are mere sequences of Unicode code-points. Internally they are in UTF8. Strings are immutable, and not indexable. There is only one way to access string characters – to read them one-by-one start-to-end. Previously class sys_String played two…

Lambdas

In Argentum lambdas are special functions: Syntax Lambda type declarations: If functions, methods or delegates take lambdas as parameters, these lambda types need to be declared: When creating lambdas, their parameters and return types are inferred from the first call…

Pipe and initializer operators

These two binary infix operators simplify some frequent scenarios Pipe operator This operator allows to pass the value from left operand to the right operand and return the result of the right operand. Initializer operator This operator allows to perform…

Strings simplified

The first language iteration is almost over. It’s time to revise some previously made decisions on syntax and semantic. Nowadays Argentum has too many syntax for strings – single and multiline, with and without interpolation, strings are defined with “”…

SQLite integration

Argentum got SQLite integration: Build & run: It prints (depending on the actual content of the database): This code: Other supported features not shown in this demo: Limitations:

Map, SharedMap, WeakMap

Argentum standard library has three hash maps: Map, SharedMap, WeakMap. Most of design details of Maps are similar to Arrays: These maps are unordered key-value containers, where: Internally they are implemented as flat, open addressed, 2n grow, linear probe, robin…

Array, WeakArray, SharedArray

Argentum has no built-in Arrays Other languages have built-in arrays (and some even have built-in maps), but these built-in data structures quickly become insufficient. So the parallel containers from the standard libraries emerge. They quickly surpass and replace the built-in…

Return, break, continue

Argentum blocks can be marked with ‘=name’ labels that are visible from inner sub-statements. They are used in ^leave statements. Leave-statement can have a parameter – expression that produces result It reads as “here’s a block “sign”. If ‘i<0’ terminate…