This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2023-08-25
Channels
- # announcements (21)
- # babashka (8)
- # beginners (11)
- # calva (11)
- # clj-kondo (14)
- # clojure (52)
- # clojure-chicago (6)
- # clojure-europe (10)
- # clojure-nl (32)
- # clojure-norway (38)
- # clojure-uk (3)
- # code-reviews (2)
- # conjure (1)
- # cursive (6)
- # datahike (4)
- # hyperfiddle (15)
- # introduce-yourself (3)
- # lsp (10)
- # matrix (17)
- # off-topic (8)
- # polylith (3)
- # slack-help (12)
- # specter (4)
- # vim (20)
- # xtdb (15)
Jeg installerte nettopp https://www.postman.com for å prøvekjøre et API fra en leverandør, så kom jeg til å tenke på en ting… Kanskje jeg like greit kan gjøre det med Clojure? Da blir det litt enklere å dele med andre også. Finnes det et bibliotek for å konsumere og teste et HTTP-basert API, eller bruker man bare et "vanlig HTTP bibliotek" à la https://github.com/http-kit/http-kit? Hvordan gjør dere sånt? 😊 Edit: Oooh, jeg fant https://practical.li/blog/posts/consuming-apis-with-clojure/, som faktisk anbefaler Postman til slutt 😅 Edit 2: Postman er faktisk ganske nice!
En fredagstanke. Hvis funksjonskomposisjon er tungvindt ender man opp med en større andel bivirkningsfunksjoner.
export const doSomeTransformation = thing => { ... pure fn}
export const fetchMeAThing = id => {... sideffecting fn}
export const fetchAndTransform = id => doSomeTransformation(fetchMeAthing(id))
Bare som et trivielt eksempel.
Jeg tror at for den gjengse TS utvikler så er det mer naturlig å skrive
export const fetchAndTransform = id => {
..sideffecting fn
.. pure fn
}
En av mange grunner til dette tror jeg kan være at de har verken comp
eller ->>
som dytter deg i retningen av å skrive mindre funksjoner som kan komponeres.Tung å lese, tilrettelegger for å threade sammen ting som ikke egentlig passer sammen (et problem som heller bør løses ved å skrive om byggeklossene)
Relevant bloggpost 😅 Hemmeligheten i clojure.core: https://www.kodemaker.no/blogg/2020-06-thread-first-and-last/
N1, men hvorfor introdusere denne forskjellen mellom seq og map, egentlig? Hva om man bare hadde hatt ->? Er det noe mer her enn at det konseptuelt blir rotete å blande sammen "enheter" og "mengder" slik?
Jeg føler på dette når jeg skriver go! • Styr å opprette data - literals er mer verbose enn i clojure • Styr å bruke immutable transformasjon heller enn å sette felt - finnes ikke stdlib-funksjoner for assoc, update, etc I praksis ender jeg opp med å tenke Immutability på arkitektur, men ikke innad i funksjoner, der setter jeg felter på structs. Gjelder Python også.
enig, veldig kjekt med GUI (emacs, postman, intellij sitt, …) for å lefle med HTTP, blir fort knot med escaping og hit og dit med curl på terminalen
Oooh! Jeg bruker jo JetBrains Rider, som bygger på samme tech som IntelliJ. Den har visst noe også! Nice.
pro tip: Du kan gjøre "copy as curl" fra nettleser og paste det rett inn hos Intellij
Siden det er fredag passer det med litt selvskryt. Jeg tror https://github.com/clojure/data.json/blob/master/src/test/clojure/clojure/data/json_gen_test.clj er den vakreste koden jeg noensinne har skrevet

Morn! I dag har jeg programmert mer Clojure med to utviklere som ikke hadde skrevet clojure før august i år. Noen refleksjoner: 1. Vi legger vekt på å evaluere uttrykk ofte - helst etter hver endring vi har gjort 2. Vi trener mye på hvordan vi skal få se hva vi gjør. Hvordan kan vi løse dette problemet med REPL? 3. Vi innførte litt strukturell redigering (slurp, raise og expand-region) helt fra starten, og bruker det nå ofte. I litt lengre form på nett: https://play.teod.eu/clojure-survival-kit/ Akkurat i dag har vi slitt litt med hvordan vi skal organisere kode så det ikke blir "map-spaghetti". Hvordan ha kontroll hva som er gyldige funksjoner på data når man ikke har typer. --- Nysgjerrig på hvordan dere ønsker utviklere velkommen til Clojure-kodebaser når de ikke har erfaring med Clojure!
1. Begynne med ClojureScript hvis mulig (lettere visualisering, raskere syntax feedback, osv 2. Foreslå keybinds som er lett å huske. Man får gjort mye med expand selection som du sier. Jeg foreslår også noen WASD keybinds til de nye (https://calva.io/customizing/#some-custom-bindings), fordi de er lettere å huske.
Det med keybinds er litt vannskelig fordi folk er kanskje vant til helt forksjellige ting. For eksempel det at Ctrl-W stenger tab i VS Code er helt crazy synes jeg. Men det er sikkert mange som er vant til det fra browsers.
Interessant at du foreslår clojurescript! Vi har kun jobbet med clojure på JVM og babashka fram til nå. Hovedsaklig fordi det er der jeg har erfaring. Har aldri fått jobbet skikkelig med Clojurescript, så jeg er ikke så komfortabel med å veilede der. WASD var et godt poeng! Enig i at ctrl+w for expand-region når man er vant til at det lukker tabs er rart. I Emacs-configen min bruker jeg M-ø!