A banjo program should conceptually be one that is run on every event, with the current state of all continuous values available (time plus saved state and time-dependent values) plus a description of the event that occurred.
The result of the program is a list of actions to take, a procedure, which will be interpreted by the runtime. The procedure should not contain any functions, just plain data, or possibly even just opaque structures not even inspectable by the application.