Open dckc opened 3 years ago
Spotter is obviously not in a state of being maintained or growing. Indeed, it never got off the ground beyond a certain point. Part of that is a failure to define what we wanted to achieve; feature parity with Typhon was not ever really on the table, and so we should have had specific other goals that we wanted to meet.
But the other part of it is a mismatch between what OCaml provides in terms of object rights and what Monte requires. We have to erase auditors in order to get to OCaml-level objects, and then we're constrained by the type system. I don't know what I expected.
objective
could give us a way around some of this, by sending objects to NTs in a category which has the effects that we want. The 0-data are internal OCaml/Haskell values, the 1-data are Applicative Functors (probably Monads) which store the effects, and the 2-data is a transformation on the effects which is agnostic to the actual values being plumbed around.
So why do I say that it's "so hard to actually write recursive objects"? By analogy with ejectors, it's hard to eject in a way that allows for restarting a computation from the ejection site; similarly, it's hard to mutate an object and also return a return value. objective
makes this as easy as possible in the same way that the logic monad from lib/logji allows for ejectors to jump back to a half-finished computation: By returning a pair def [result, nextComputation] := compute(computation)
which designates the next destination and then implementing a trampoline.
@MostAwesomeDude says:
context:
Settling Foundations Feb 10 to Friam
@cwebber
@MostAwesomeDude
I said package/objective looks cool... does it shed any light on https://github.com/monte-language/spotter ?
@MostAwesomeDude