\!: in Ford, except inner loops
:: ford: build system vane
-::
+!:
:: Ford is a functional reactive build system.
::
:: A Ford build is a function of the Urbit namespace and a date that
:: blocking the main Urbit event loop, letting other work be done.
::
++ execute-loop
+ !.
~/ %execute-loop
|= builds=(set build)
^+ ..execute
:: +build-receipt algorithms to the ford state.
::
++ execute
+ !:
~/ %execute
|= builds=(set build)
^+ ..execute
:: place it in :next-builds. +gather runs until it has no more candidates.
::
++ gather
+ !.
~/ %gather
|= [builds=(set build) force=?]
^+ ..execute
:: sub-builds to :candidate-builds.
::
++ gather-build
+ !:
|= =build
^+ ..execute
~| [%duct duct]
:: and apply them to ..execute.
::
++ reduce
+ !.
~/ %reduce
|= build-receipts=(list build-receipt)
^+ ..execute
:: +apply-build-receipt: applies a single state diff to ..execute
::
++ apply-build-receipt
+ !:
|= made=build-receipt
^+ ..execute
:: process :sub-builds.made
