Hi, does anybody know of a non-trivial Clojure codebase implemented using the “Functional Core, Imperative Shell” https://www.destroyallsoftware.com/screencasts/catalog/functional-core-imperative-shell approach?
@kumarshantanu I talked about it (between other things) in this presentation https://youtu.be/4M7u2qyyAQ8 . The example I used is very simple but I was hoping to make it simpler to grasp the idea. Code is at https://github.com/jivagoalves/codebreaker Hope it's helpful.
I would say that any Re-frame code base would approximate this paradigm quite well.
That basically is the paradigm of Re-frame.
I don't remember if it's spelled, but it's the same thing https://www.youtube.com/watch?v=0EX3UIl-Sd8
@simongray @ivan.kanak_clojurians You mean, FRP is much like FC-IS?
my post is not about re-frame or FRP, it's about a presentation on how the functinal-core/imperative-shell (or "clean architecture") can be implemented, starting with clojure-spec in the center to define the domain, out to the supporting services that cause side-effects. ..still, not an actual non-trivial Clojure codebase - thought, tbh, I would be interested in that in any language
I didn’t mention FRP, I mentioned Re-frame…? I guess it has elements of FRP too, but I don’t see how that is relevant here. The thing Re-frame does well is nudging developers to mostly use pure functions for almost all application logic (events) and prefer dumb presentation components (form-1 reagent components). All side-effecting code is isolated into effects
and all input that is not under your control is isolated into coeffects
. The rest of a Re-frame codebase is pure.
@ivan.kanak_clojurians @simongray Thank for clarifying - I don’t have much exposure to Reframe. Will go through the linked resources.