3 ms·
If you want to avoid the word 'functional' then say pure: pure core, impure shell. Or maybe: pure core, I/O shell. Otherwise it's too long :) Idk. I like Ga
by cryptonector 5d ago
If you want to avoid the word 'functional' then say pure: pure core, impure shell. Or maybe: pure core, I/O shell. Otherwise it's too long :)
Idk. I like Gary's formulation. No, I love it. One time when designing an STS with Claude I told it my FCIS design for an STS and Claude demonstrated real excitement -- it really loved the idea.
Briefly, my idea was to have the functional core isolated such that it receives a JSON description of the input request, any additional data [wait for it], and outputs either: an error, a request for more data, or a description of a token/credential to issue and with what issuer credentials. This would allow one to write all the core logic in Julia, JS, MicroJS, jq even, any language you like, and the imperative shell is what does all the rest (authentication, token validation, database lookups -- whatever you want). I swear Claude expressed real excitement over this. I've seen Claude be frustrated as well. It really does seem to have some sorts of emotions.
- BoiledCabbage 5d agoSounds very similar to the "interpreter" or "virtual machine" pattern (can't recall the exact name). But essentially a component receives a list of high level instructions / description of what the user wants done, and it translates that into descriptions of "lower level" commands that should be performed. And those commands then get executed separately. Anythinf statefule / io is contained in the commands and can be tested easily with external dependencies. And the complex logic is all pure in decided what to do and how to do it based on what was asked for.
- cryptonector 5d agoFCIS is basically that. You don't need an interpreter/VM, but that is an option.