Job Monad #
This module contains additional definitions for Lake Job
.
In particular, it defines JobM
, which uses BuildContext
, which contains
OpaqueJob
s, hence the module split.
The monad of asynchronous Lake jobs.
While this can be lifted into FetchM
, job action should generally
be wrapped into an asynchronous job (e.g., via Job.async
) instead of being
run directly in FetchM
.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
Equations
- Lake.instMonadLiftLogIOJobM = { monadLift := fun {α : Type} => Lake.ELogT.takeAndRun }
Record that this job is trying to perform some action.
Equations
- Lake.updateAction action = modify fun (s : Lake.JobState) => { log := s.log, action := s.action.merge action, trace := s.trace }
Instances For
Returns the current job's build trace.
Equations
- Lake.getTrace = (fun (x : Lake.JobState) => x.trace) <$> get
Instances For
Sets the current job's build trace.
Equations
- Lake.setTrace trace = modify fun (s : Lake.JobState) => { log := s.log, action := s.action, trace := trace }
Instances For
Mix a trace into the current job's build trace.
Equations
- Lake.addTrace trace = modify fun (s : Lake.JobState) => { log := s.log, action := s.action, trace := s.trace.mix trace }
Instances For
Returns the current job's build trace and removes it from the state.
Equations
- Lake.takeTrace = modifyGet fun (s : Lake.JobState) => (s.trace, { log := s.log, action := s.action, trace := Lake.nilTrace })
Instances For
The monad used to spawn asynchronous Lake build jobs. Lifts into FetchM
.
Equations
Instances For
Equations
- Lake.JobM.runSpawnM x fn stack store ctx s = do let __do_lift ← x fn stack store ctx s.trace pure (Lake.EResult.ok __do_lift s)
Instances For
Equations
- Lake.instMonadLiftSpawnMJobM = { monadLift := fun {α : Type} => Lake.JobM.runSpawnM }
The monad used to spawn asynchronous Lake build jobs. Replaced by SpawnM
.
Equations
Instances For
Equations
- Lake.instMonadLiftJobMFetchM = { monadLift := fun {α : Type} => Lake.FetchM.runJobM }
Equations
- Lake.instMonadLiftFetchMJobM = { monadLift := fun {α : Type} => Lake.JobM.runFetchM }
Spawn a job that asynchronously performs act
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Wait for a job to complete and return the produced value.
If an error occurred, return none
and discarded any logs produced.
Equations
- self.wait? = do let __do_lift ← self.wait pure (Lake.EResult.result? __do_lift)
Instances For
Wait for a job to complete and return the produced value. Logs the job's log and throws if there was an error.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Apply f
asynchronously to the job's output.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Apply f
asynchronously to the job's output
and asynchronously await the resulting job.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
a.zipWith f b
produces a new job c
that applies f
to the
results of a
and b
. The job c
errors if either a
or b
error.
Equations
- One or more equations did not get rendered due to their size.
Instances For
a.zipWith f b
produces a new job c
that applies f
to the
results of a
and b
. The job c
errors if either a
or b
error.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Merge a List
of jobs into one, discarding their outputs.
Equations
- Lake.Job.mixList jobs = List.foldr (fun (x1 : Lake.Job α) (x2 : Lake.Job Unit) => x1.mix x2) Lake.Job.nil jobs
Instances For
Merge an Array
of jobs into one, discarding their outputs.
Equations
- Lake.Job.mixArray jobs = Array.foldl (fun (x1 : Lake.Job Unit) (x2 : Lake.Job α) => x1.mix x2) Lake.Job.nil jobs
Instances For
Merge a List
of jobs into one, collecting their outputs into a List
.
Equations
- Lake.Job.collectList jobs = List.foldr (fun (self : Lake.Job α) (other : Lake.Job (List α)) => Lake.Job.zipWith List.cons self other) (pure []) jobs
Instances For
Merge an Array
of jobs into one, collecting their outputs into an Array
.
Equations
- Lake.Job.collectArray jobs = Array.foldl (fun (self : Lake.Job (Array α)) (other : Lake.Job α) => Lake.Job.zipWith Array.push self other) (pure (Array.mkEmpty jobs.size)) jobs
Instances For
BuildJob (deprecated) #
A Lake build job.
Equations
- Lake.BuildJob α = Lake.Job α
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lake.BuildJob.ofJob job = Lake.Job.mapOk (fun (trace : Lake.BuildTrace) (s : Lake.JobState) => Lake.EResult.ok () { log := s.log, action := s.action, trace := trace }) job
Instances For
Equations
Instances For
Equations
Instances For
Equations
- Lake.BuildJob.instPure = { pure := fun {α : Type ?u.6} (a : α) => Lake.Job.pure a }
Equations
- Lake.BuildJob.map f self = Lake.Job.map f self.toJob
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- Lake.BuildJob.mixList jobs = pure (Lake.Job.mixList jobs)
Instances For
Equations
- Lake.BuildJob.mixArray jobs = pure (Lake.Job.mixArray jobs)
Instances For
Equations
- Lake.BuildJob.zipWith f self other = Lake.Job.zipWith f self.toJob other.toJob
Instances For
Equations
- Lake.BuildJob.collectList jobs = pure (Lake.Job.collectList jobs)
Instances For
Equations
- Lake.BuildJob.collectArray jobs = pure (Lake.Job.collectArray jobs)