-
Notifications
You must be signed in to change notification settings - Fork 1
Home
Philip Diffenderfer edited this page May 14, 2021
·
1 revision
Expangine is a modern visual programming language with advanced features .
Common features
- Strict type system
- Algebraic data types
- Type inference
- Generics
- Functions are first-class objects
- Interface system
- Operators can be redefined for classes (operator overloading), and new operators can be defined.
- System types
- Primitive: any, boolean, date, number, text
- Composite: enum, object, tuple, color, list, map, set
- Algebraic: tuple, many, not
- Other: function, optional, null, user-defined type, global data reference
Unique to Expangine
- Automatic refactoring of data, functions, and programs when data types are changed
- Transparent algorithmic and memory complexity for all operations and functions
- Documentation/comments can be attached to types & expressions
- User specified unit testing for any function/operation
- Easily refactor any expression into a reusable function
- Types and expressions are stored as JSON and could be parsed by any language and transformed into a callable function or code in another language.
- Add comments to Expression and Type
- Remove Comment expression
- Add Log expression that adds message to program log. Accepts any Expr.
- Update Invoke to accept Expression as function name/reference. When it resolves to string, look at global functions. When it resolves to function expression or function object, call it.
- Definitions keeps a list of the types. You can create your own based on an existing type.
- Add global operations, detached from types.
- Each type when registers with Definitions - adds which operations it implements. Simple list of operation names.
- Method expr is a path node that extends Invoke but doesn't have function name, the parent/previous type is the
this
. - Add ForEach expression which takes a collection/iterable
- Remove GetEntity?
- Remove GetRelation?
- EntityType is copied to make Named/User/CustomType
- EntityType is renamed RelationalType
- Remove legacy support
- Remove explicit ColorType and add as "user type"
- Add proper Date †ype that doesn't rely on terrible JS Date