This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-12-10
Channels
- # adventofcode (54)
- # announcements (30)
- # asami (13)
- # aws (10)
- # babashka (16)
- # babashka-sci-dev (44)
- # beginners (95)
- # calva (63)
- # clara (10)
- # clj-kondo (3)
- # cljfx (6)
- # cljs-dev (7)
- # cljsrn (1)
- # clojure (68)
- # clojure-europe (59)
- # clojure-nl (7)
- # clojure-norway (12)
- # clojure-spec (6)
- # clojure-uk (6)
- # clojurescript (4)
- # component (4)
- # conjure (5)
- # datomic (3)
- # deps-new (1)
- # events (4)
- # exercism (1)
- # figwheel-main (1)
- # fulcro (33)
- # gratitude (1)
- # improve-getting-started (3)
- # jobs (3)
- # lsp (5)
- # malli (10)
- # membrane (5)
- # music (3)
- # nextjournal (6)
- # off-topic (42)
- # pedestal (2)
- # polylith (14)
- # portal (11)
- # re-frame (42)
- # releases (3)
- # reveal (4)
- # shadow-cljs (62)
- # tools-build (1)
- # tools-deps (3)
- # web-security (1)
- # xtdb (3)
i matematikken på barneskolen driver de med noe rare greier, har dere sett det? De sier "en pluss fire", ikke "pluss en fire"? #dadjoke
TIL: for
. Visste jo at den fantes. Men har egentlig ignorert den helt. Den er jo veldig fin å bruke i stedet for (pun not intended) map i mye GUI-kode f.eks? Greit å ikke trenge å lage seg en funksjon når man skal iterere gjennom ting og lage data for GUI-rendring
Samme distinksjonen jeg gjør i reagent / re-frame. Til enkel datamassasje bruker jeg map
og i view-kode bruker jeg for
. Føles ryddigere når man trenger :key
for at react skal være fornøyd
Er det ikke også idiomatisk å bruke f.eks. doseq
(når man har side-effects) eller loop
+ recur
istedenfor for
i mange tilfeller? Når man bare vil traversere en sekvens uten “hukommelse.” map
+ reduce
kan kanskje også være et alternativ. Typ doseq
hvis man ikke trenger å “huske” noe i loopen til neste iterasjon, ellers loop
+ recur
i kombinasjon med first
og rest
— eller map
+ reduce
med en anonym funksjon — for å ræve over en sekvens, når man trenger å gjøre kalkulasjoner (f.eks. summeringer).
jo, bruker doseq til sideeffekt-greier (som stort sett er når jeg leker, ikke i kode som sjekkes inn)
Nyttig å bruke for
mer som et verktøy for å bygge opp lister, enn for å itere over noe. Den er mer som i Python enn C/Java, om du vil. I motsetning til doseq/dorun/doall/run!
er for
lazy, så ofte vet du hvilken av de du trenger.
Ja jeg foretrekker`for` , spesielt i UI, fordi da kommer collection først, ikke sist som med map
(uten`->>`), og da er koden mye lettere å lese.
Eneste tingen som er litt dumt med for
er at jeg tror ikke det er en lett måte å legge til index. Med map
kan man lett bytte til map-indexed
hvis man trenger det (for react key).
@U08JKUHA9
Kva med (map-indexed vector ...)
inne i for-en?
(let [inp [:a :b :c]]
(for [[idx item] (map-indexed vector inp)]
{:index idx
:item item}))
=> ({:index 0, :item :a} {:index 1, :item :b} {:index 2, :item :c})
index bør vel uansett ikke brukes som key :thinking_face: Ihvertfall sånn jeg forstår react + keys. Da risikerer man vel at den ikke får med seg om man resorter lista?
@UGJE0MM0W Jo den er grei, men litt verbose. Da bruker jeg vanlighvis (->> inp (map-indexed ...
i stedet.