[HN Gopher] Lessons on Writing JavaScript and React from Clojure... ___________________________________________________________________ Lessons on Writing JavaScript and React from ClojureScript Author : yogthos Score : 34 points Date : 2021-05-08 18:28 UTC (4 hours ago) (HTM) web link (jerue.org) (TXT) w3m dump (jerue.org) | mikojan wrote: | 1. Redux docs encourage you to use @redux/toolkit which | drastically reduces boilerplate. And even if you do opt into | using vanilla redux: Typescript for some time now has supported | string literal types which render enums obsolete almost. | | 2. Mutability is not at all a problem. Those types of bugs are | obvious. On the other hand, mutability allows for a type of fine- | grained control you will absolutely need. It is Javascript after | all. | | 3. Redux _does_ allow "users to create complicated compounded | subscriptions in a performant way using materialized views" which | is a rather convoluted way of saying "memoize derived values." | You are looking for the createSelector-API you had been shunning | in the opening statement. | | 4. What in the name of god almighty is this: | function Component({ children }) { const { data, | loading, error } = useGetMyData(); return ( | <div> {(function () { if | (loading) { return ( | <div>loading...</div> ); } | if (error) { console.error("Uh oh!"); | return ( <div style={{ color: "red" | }}>{error.message}</div> ); | } return ( <> | <div>Data:</div> <div style={{ color: | "green" }}>{data}</div> </> | ); })()} {children} | </div> ); } | | We are encouraged to pour yet another layer of abstraction on top | of Javascript pulling in clones of the very libraries we had | already been using. Only now, our knowledge about performance | testing and tuning in ReactJS/Javascript is basically useless. | | At this point, why not do away with all "boilerplate" and just | use Elm? | prezjordan wrote: | I assumed (4) was the author's frustration that if-statements | aren't expressions, and nesting ternaries is rough. | swordbeta wrote: | What is wrong with the component? | agentbellnorm wrote: | I just wish more people would adopt clojure and clojurescript. | The world would be a better place. | rchaves wrote: | > ClojureScript has unlocked whole new levels of productivity | | I keep seeing this claim over and over again about Clojure and | Clojurescript. I don't get it, at all. I tried it, multiple | times, I don't get where the productivity boost could come from. | I though maybe the so-called REPL-driven development (as if | clojure is the only language ever with a REPL), I watched videos | about REPL-driven development, developed a project that way, | cool... not more productive than say TDD or hot-reloading | | > I enjoy it because there is little cognitive load in terms of | understanding what the program is doing. | | Is there? I mentioned I was not more productive in clojure, in | fact I was actually much slower in clojure. It's not lack of FP | knowledge, because in fact I love how productive I am with Elm, | so maybe it's the lisp style, or maybe my inexperience with the | language, I can't memorize all thousands of functions to | manipulate lists and hashs in clojure (get-in, map-vals, conj, | dissoc, select-keys, sorted-map-by, do you know what all those | do?) which do a lot, I felt clojure was dense, the opposite of | little cognitive load | | After that, his following arguments about reagent vs useContext | and Re-Frame vs redux is not about some real advantage of | clojurescript over javascript, but rather conscious decisions | that js community did to be explicit over implicit, it was an | explicit trade-off, doesn't convince me that much as positive | point for cljs | | I want to like Clojure and Clojurescript, I really do, I would | like to brag about writing lisp like the rest of you too, please | convince me, claiming productivity because of "repl" or "less | symbols" is not working, I need deeper reasoning | christophilus wrote: | Fellow South Carolinian and former Charlestonian. I nearly | applied to Reify for the same reasons. Clojure is one of my | favorite languages. However, I suspect I'd dislike it in a large | product / team setting. Having moved from C# to Rails to | JavaScript and now to TypeScript, I think I'd miss static types | too much. | | I'd be very interested in a follow up blogpost after you've been | at Reify for a year or two. ___________________________________________________________________ (page generated 2021-05-08 23:00 UTC)