mirror of
https://github.com/fluencelabs/aquavm
synced 2025-03-15 20:40:50 +00:00
38 lines
913 B
Markdown
38 lines
913 B
Markdown
# Aquamarine
|
|
|
|
Aquamarine is a distributed choreography language & platform
|
|
|
|
## AIR
|
|
|
|
The current version supports the following instructions:
|
|
- call
|
|
- par
|
|
- seq
|
|
- fold
|
|
- next
|
|
- null
|
|
|
|
## Examples
|
|
|
|
```lisp
|
|
(seq (
|
|
(call (%current_peer_id1% (local_service_id local_fn_name) () result_name_1))
|
|
(call (remote_peer_id (service_id fn_name) () result_name_2))
|
|
)),
|
|
```
|
|
|
|
This instruction sequence contains two call instructions in the sequential order:
|
|
1. call a function with `local_fn_name` name of a local service with `local_service_id` id and bind result to `result_name`
|
|
2. call a remote peer with `remote_peer_id` id
|
|
|
|
```lisp
|
|
(fold (Iterable i
|
|
(seq (
|
|
(call (%current_peer_id% (local_service_id local_fn_name) (i) acc[]))
|
|
(next i)
|
|
)
|
|
)))
|
|
```
|
|
|
|
This example is an analog of left fold. It iterates over `Iterable` and on each iteration calls `local_service_id` and puts result to `acc`.
|