Skip to content

U Dimension

If you want to start with U syntax, please skip this section and go to Syntax.

To avoid confusion with others terms used in others dimensions, U employs simple internal model terms to facilitate easy visualization of ideas, even for those without extensive computer science knowledge.

These clear terms facilitate proper implementation, particularly for heterogeneous or concurrent systems.

In U:

  • every piece of information is represented by either a values or an action
  • a compel (computation element) is the combinaison of a value and an action to create a new value

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffffff', 'mainBkg': '#cde9f4'}}}%% flowchart LR subgraph Compel direction LR M0(Value <br/><in Place 1>) --- P(and) --- F((Action)) --- E(create) --> M1(New Value<br/><in Place 1 or X>) style F fill:#55bf9e,stroke:#333 style P fill:#FFFFFF,stroke:#333 style E fill:#FFFFFF,stroke:#333 end
The generic term Action is preferred over function because function may imply several meanings such as:

  • a structure with a signature, a statement list (body)
  • a executable piece of code at compile or run time

For example:

:inc :>: arg :: arg + 1   
\< increment 0
# print '1'

  • 0 is a value
  • 'inc' is a function (action) that add 1 to its parameter arg
  • 'print increment of 0' is the Compel

It would be visualized with the following diagram:

%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#ffffff', 'mainBkg': '#cde9f4'}}}%% flowchart LR subgraph Increment direction LR M0(0) --- P(+) --- F((inc)) --- E(=) --> M1(1) style F fill:#55bf9e,stroke:#333 style P fill:#FFFFFF,stroke:#333 style E fill:#FFFFFF,stroke:#333 end

Value

A Value is a structure represented physically in a Place – a location in memory. For example:

  • number 1 will be stored in a 32 or 64 bits memory slot
  • string 123 could be stored in three bytes in memory slots [1, 2, 3], or as a list of 3 substring if it has been concatened before: ["1", "2", "3"].

Action

An Action is a set of U available capabilities —whether compile-time functions, runtime functions, instructions, or other components—to correctly transform a value to another one. This concept is minimal for efficiently composing values sequentially or concurrently, without tightly coupling them to user-defined values and functions.

For instance, a string value like "123" can be effectively and explicitly converted to a number value in a static or dynamic language, ensuring reliability and portability across different contexts.

Closure

An Closure consists of a value and an action. A computation is pending to be performed on demand

Place

A Place is a location in memory.

Plane and Joint

Compels can be sequentially combined. But to manage concurrent cases, we need to introduce Planes.

A plane consists of:

  • two compels
  • a Joint

The Plane concept is needed to define compels' execution relationships. The Joint represents their relationship: executed in sequence, concurrently, concurrently and delayed, ...

flowchart LR subgraph Plane direction LR subgraph Compel-X direction LR max0(value X0) -->|action X| max1(value X1) end subgraph Compel-Y direction LR may0(value Y0) -->|action Y| may1(value Y1) end Compel-X -->|Joint XY| Compel-Y end style Plane fill:#FFFFFF,stroke:#333 style Compel-X fill:#FFFFFF,stroke:#333 style Compel-Y fill:#FFFFFF,stroke:#333

Planes can be combined to create new planes. For example, in :

 :a : 3; b += 1
...leads to the following execution graph:

flowchart LR direction LR subgraph Plane-PAB subgraph Plane-PA direction LR subgraph Action-X direction LR max0(':a'<br/>Symbol) -->|':' <br/> action = new| max1('a'<br/>left-value) end subgraph Action-Y direction LR may0('3'<br/>Number) -->|<br/>action = new| may1(3<br/>right-value) end Action-X -->|bind| Action-Y end subgraph Plane-PB direction LR btxt(...code for 'b += 1') end Plane-PA -->|Parallel| Plane-PB end style Plane-PAB fill:#FFFFFF,stroke:#333 style Action-X fill:#FFFFFF,stroke:#333 style Action-Y fill:#FFFFFF,stroke:#333

:a : 3 and b += 1 are in 2 distinct planes so they might be selected for parallel computations.