Task(
logic: ((cond, trueBranch, falseBranch) as inputs, env) =>
visit(cond, (c) => c)
|> predicate()
|> visit(trueBranch)
|> predicate((env, cond) => cond !== true)
|> visit(falseBranch)
inputs: (node) => (node.cond, node.trueBranch, node.falseBranch)
)
type Task<d, c> {
logic: (inputs: a, env: b) => Graph<c>
inputs: (value: d) => a
}
This seems to be a completely novel idea for static based task systems as a compiler. As can be seen above while the solution I propose isn’t perfect yet questions about predicate
and notFalse
(which I think can just be another visitor), we should be able to convert this to a compile time static graph analyze it and generate a rather optimal task execution system without doing that I think at runtime we can just run this and get free scheduling and many benefits of advanced compilers like incremental compilation.
TODO
- Finish a reference design of the task types
- Write a knowledge post on traditional compilers
- Query based
- File based
- Alternatives?
- Write a knowledge post on my idea
- Try implementing my idea
- Write a knowledge post on the impl
- Write a research paper
- Look into getting published