(define (fix p b) (define f (p (lambda i (apply f i)) b)) f) (define (mix c p) (lambda (f b) (c f (p f b)))) It can be made even shorter. Or to avoid exponentially bad performance without having to think, it can use force and delay everywhere rather than sparingly. Explanations: https://github.com/metareflection/poof/ Looks at util/coop.scm there (with a shorter prefix in coop.rkt or coop.ss) for a complete example with plenty of helper functions, that I now use for all my (pure functional) slides. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org “Think you can, or think you can’t — either way, you’ll be right.” — Henry Ford On Wed, May 21, 2025 at 9:49 PM John Cowan <xxxxxx@ccil.org> wrote: > > This SRFI is about fine-tuning the existing Prometheus design, which is based on Self, not about something completely minimal. It's not like we are going to wind up with a single standardized object system, after all. It's too easy to build whatever object system suits you. > > What are your two lines? > > On Wed, May 21, 2025, 7:42 AM Faré <xxxxxx@gmail.com> wrote: >> >> Strong disagree. Why need a root object at all? >> >> My prototype object system Gerbil-POO has no notion of "root object", >> no need for "system-defined slots". You get the slots you ask for, no >> more no less. >> >> My other prototype object system, COOP, has no notion of object >> either. Just mixin inheritance of prototypes that you can instantiate >> into records with a simple fixed-point operation. OOP without objects, >> in two lines of code—plus a few helpers to make it more usable. >> >> —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org >> “One has not only a legal but a moral responsibility to obey just laws. >> Conversely, one has a moral responsibility to disobey unjust laws.” >> — Martin Luther King, Letters From Birmingham Jail >> >> >> On Mon, May 19, 2025 at 10:20 PM John Cowan <xxxxxx@ccil.org> wrote: >> > >> > Looking good! However, I don't see the benefit of having multiple root objects. If by convention *the-root-object* has no slots except the system-defined ones, then any alternative roots can be direct children of the unique root with no loss of function. Removing everything in that section except *the-root-object* would achieve a useful simplification. >> > >> > On Mon, May 19, 2025, 11:08 AM Daniel Ziltener - dziltener at lyrion.ch (via srfi-discuss list) <xxxxxx@srfi.schemers.org> wrote: >> >> >> >> I updated the proposal. I added a mirror interface for additional >> >> reflection functionality. Please have a look, feedback, advice and >> >> additions welcome; unless further time for discussion is needed, this >> >> will be handed in on the 26th. >> >> >> >> The proposal can be found here: >> >> https://forgejo.lyrion.ch/zilti/srfi-object-system-proposal/src/branch/master/spec.org >> >>