This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2019-06-01
Channels
- # announcements (7)
- # beginners (30)
- # boot (6)
- # calva (24)
- # cider (8)
- # clj-kondo (8)
- # cljs-dev (16)
- # cljsrn (8)
- # clojure (60)
- # clojure-italy (19)
- # clojure-mexico (6)
- # clojure-nlp (2)
- # clojure-uk (11)
- # clojurescript (36)
- # datomic (11)
- # hoplon (1)
- # juxt (2)
- # kaocha (1)
- # keechma (13)
- # nrepl (1)
- # off-topic (51)
- # reagent (7)
- # rewrite-clj (17)
- # robots (7)
- # shadow-cljs (2)
- # sql (4)
- # testing (1)
- # tools-deps (11)
- # vim (12)
it's probably not uncommon to map a collection n times sequentially
with infix in oo you get something like myCollection.map(f).map(g)
but (-> my-col (map f) (map g))
inserts the collection as the wrong argument to map
i have other expressions that only work thread-first
maybe i should look at compose instead
i could flip
map
... why does this work?
clojure-scratch.core> (->> {:a 1} (:a))
1
clojure-scratch.core> (-> {:a 1} (:a))
1
well thats a big question in a way.
->> threads the first value through the other forms (in this case just (: a)
. And in that case, (:a {:a 1})
works because keywords can act as functions on a map.
Does that help?
in the ->
case, it works because maps can act as functions
thanks @U0DJ4T5U1, that is helpful. i overestimated the difference between thread first and thread last, i think
ok, thank you! thread-last it is.
i knew about macroexpand but had forgotten i needed to quote the expression
Any tips, articles, videos or books on how to approach studying a new codebase? Is this even a thing people build workflows/systems for?
not really 🙂. It's such a generic thing that any tool or methodology would probably be worse then staying flexible. Get plenty of sleep! Have open and honest communication with your team about whats going on.
Thank you for your response 🙂 I still have no team (never had one, solo learner) or access to other people programming (besides videos or online live coding) so I often wonder about such stuff that you would just learn by watching a few people with more experience doing.
I have a single programmer friend whom I've never met personally, and he explained to me how he uses grep
like tools to regexp search projects and find relevant definitions to keep on grepping and to understand where things are called and why. So for now I have: sleep well, abuse grep
and, when possible, communicate honestly with those involved. 🙂
I'm in a point in my personal path that I'm finding these nice places to work and looking at their open source libraries, so I'm doing a lot of reading and sometimes it's tough. When it's Clojure I jump back and forward with cider-find-var
and cider-pop-back
, highlight stuff in a file with highlight-symbol
and search the entire project with Projectile and things are improving. In other languages it's harder. Maybe I need to start looking at the tests first?
I'm using Cursive as my primary Clojure IDE and I really like it. However I was wondering that should I also be fluent using Emacs / Cider if I have some issues in some production environment (e.g. headless Linux) running Clojure and if I want to start REPL in that box? Or in this kind of situation do Clojurians usually just create a VPN tunnel from their local workstation to the production box and connect their workstation IDE's REPL to the remote nrepl session somehow?
You can also open a REPL from IntelliJ using cursive. Only reason to learn Emacs / Cider I can think of is if the rest of the team is using it.
Ok. I already thought that the way to go is to setup ssh tunnel to the box and then just connect Cursive repl to it using the tunnel. Thanks.