Convex Lisp Runner.
This is a whole application. It is available as a library in case it needs to be embedded. Then, only -main
is really
useful.
Executes each form as a transaction, moving from transaction to transaction.
A transaction can return a request to perform operations beyond the scope of the CVM, such as file IO or advancing time. Those requests turn Convex Lisp, a somewhat limited and fully deterministic language, into a scripting facility.
Requests are vectors following expected conventions and implementations can be found in the [[convex.run.sreq]] namespace.
A series of CVX libraries is embedded, building on those requests and the way the runner generally operates, providing features such as reading CVX files, unit testing, a REPL, or time-travel. All features are self documented in the grand tradition of Lisp languages.
Functions throughout these namespaces often refer to env
. It is an environment map passed around containing
everything that is need by an instance: current CVM context, opened streams, current error if any, etc.
In case of error, convex.run.exec/fail
must be used so that the error is reported to the CVX executing environment.
List of transactions pending for execution is accessible in the CVX execution environment under $.trx/*list*
. This list
can be modified by the user, allowing for powerful metaprogramming. Besides above-mentioned requests, this feature is used
to implement another series of useful utilities such as exception catching.
Convex Lisp Runner. This is a whole application. It is available as a library in case it needs to be embedded. Then, only [[-main]] is really useful. Executes each form as a transaction, moving from transaction to transaction. A transaction can return a request to perform operations beyond the scope of the CVM, such as file IO or advancing time. Those requests turn Convex Lisp, a somewhat limited and fully deterministic language, into a scripting facility. Requests are vectors following expected conventions and implementations can be found in the [[convex.run.sreq]] namespace. A series of CVX libraries is embedded, building on those requests and the way the runner generally operates, providing features such as reading CVX files, unit testing, a REPL, or time-travel. All features are self documented in the grand tradition of Lisp languages. Functions throughout these namespaces often refer to `env`. It is an environment map passed around containing everything that is need by an instance: current CVM context, opened streams, current error if any, etc. In case of error, [[convex.run.exec/fail]] must be used so that the error is reported to the CVX executing environment. List of transactions pending for execution is accessible in the CVX execution environment under `$.trx/*list*`. This list can be modified by the user, allowing for powerful metaprogramming. Besides above-mentioned requests, this feature is used to implement another series of useful utilities such as exception catching.
(-main & trx+)
Reads and executes transactions.
If no transaction is provided, starts the REPL.
(-main "($.stream/out (+ 2 2))")
Reads and executes transactions. If no transaction is provided, starts the REPL. ```clojure (-main "($.stream/out (+ 2 2))") ```
(init env)
Used by eval
to initiate env
.
Notably, prepares:
:convex.run/fatal
, akin to convex.run.exec/fail
, called only in case of
a fatal error that cannot be reported to the CVX environment (seldom)Used by [[eval]] to initiate `env`. Notably, prepares: - STDIO streams - Initial context - Function under `:convex.run/fatal`, akin to [[convex.run.exec/fail]], called only in case of a fatal error that cannot be reported to the CVX environment (seldom)
cljdoc is a website building & hosting documentation for Clojure/Script libraries
× close