This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2020-10-28
Channels
- # announcements (8)
- # architecture (10)
- # babashka (24)
- # beginners (93)
- # calva (2)
- # chlorine-clover (6)
- # cider (2)
- # cljfx (3)
- # cljsrn (5)
- # clojure (59)
- # clojure-australia (2)
- # clojure-canada (9)
- # clojure-europe (46)
- # clojure-nl (3)
- # clojure-spain (1)
- # clojure-spec (2)
- # clojure-uk (6)
- # clojurescript (98)
- # cryogen (20)
- # datomic (22)
- # depstar (14)
- # emacs (4)
- # etaoin (2)
- # figwheel-main (1)
- # fulcro (5)
- # graalvm (1)
- # java (69)
- # malli (33)
- # off-topic (5)
- # pathom (1)
- # re-frame (14)
- # reagent (10)
- # shadow-cljs (24)
- # sql (22)
- # vim (2)
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?
@U066J7E2U 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.
I don't remember if it's spelled, but it's the same thing https://www.youtube.com/watch?v=0EX3UIl-Sd8
@U4P4NREBY @U8ZE1VBSS 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.
@U8ZE1VBSS @U4P4NREBY Thank for clarifying - I don’t have much exposure to Reframe. Will go through the linked resources.
I found it interesting where the speaker talks about moving between effects and normal (pure) worlds: https://www.youtube.com/watch?v=Nrp_LZ-XGsY&t=1624s
I found it interesting where the speaker talks about moving between effects and normal (pure) worlds: https://www.youtube.com/watch?v=Nrp_LZ-XGsY&t=1624s