Fork me on GitHub
#clojure-norway
<
2022-02-18
>
augustl08:02:12

føler jeg løste debatten om statisk/dynamisk i går, kjør gjerne flamewar her

2
❤️ 1
leifericf09:02:43

Jeg synes det er verdt å nevne “https://en.wikipedia.org/wiki/Gradual_typing” som en slags “hybrid” hvor man kan få det beste fra begge verdener. https://www.typescriptlang.org/docs/handbook/2/everyday-types.htmlhttps://hexdocs.pm/elixir/1.12/typespecs.html, og https://clojure.org/guides/spec er alle gode eksempler synes jeg. Da kan man velge å bruke types hvor det gir mening, men man slipper å bruke det overalt. I tillegg til “fail early vs. fail late,” som @U0MKRS1FX nevner, kan typer også hjelpe en god del med tooling, f.eks. mer sofistikert auto-completion og mer spesifikke feilmeldinger à la Haskell og Elm. Typespesifikasjoner kan også brukes som grunnlag for generativ testing, osv. For meg handler type spesifikasjoner mer om å være “ekstra eksplisitt” i de delene av systemet hvor det er større sannsynlighet for at ting kan gå galt, som “provisoriske støttehjul” for utvikling. (edited)

👍 1
augustl08:02:01

typ, dette er vesensforskjellen som gjør at noen elsker statisk og hater dynamisk, og vice versa

slipset10:02:09

Jeg så den i morges og tenkte jeg skulle skrive noe….

slipset10:02:53

Men jeg var litt usikker på hva. Har siste tiden jobbet en del i React og TS og gjort meg opp noen tanker rundt i allefall hvordan man typer.

Jakub Holý (HolyJak)11:02:01

Not sure it is fail late for me. I just find modelling with maps that I build through my pipeline easier then defining a type for each substep. (`RawPerson -> PersonWithName -> PersonWithNameAndAge ->` 🙀 ). In somewhat related context, Wilker had a couple great points about the problem with types at the beginning of https://www.youtube.com/watch?v=YaHiff2vZ_o Though you have a point with it being a tradeoff between complexity and something - safety, perhaps?

augustl11:02:43

@slipset sitter og setter meg inn i et JS-prosjekt her selv, og merker at det er en viss tilfredsstillelse i å type den tingen jeg skal jobbe med i typescript for å få oversikt over hva systemet kan gjøre og forventer. Men, det jeg i praksis gjør da, er jo å si at på toppnivå så må alle som jobber med denne tingen ha kunnskap om systemet som helhet. Mange greier som er optional, osv osv osv, men jeg har jo likevel innført kompleksitet som ikke var der før

augustl11:02:14

føles som det er i dette skjæringspunktet her mainstream-appealen til typesystemer ligger, kanskje? Det er jo snedig å kunne kjapt se alle tingene som kan være i en ting

augustl11:02:22

så føles det også som dette problemet løses med functional core, imperative shell. Når du har en imperative core, er det jo veldig super ekstra deilig å få denne oversikten. Hvis du har en functional core, så kan du jo bare kjøre funksjonen og se hva du fikk tilbake, f.eks

augustl11:02:42

og så har jeg alltid tenkt på "fail early" som bra. Men det er jo krydret med imperative tanker. I en functional core har det ikke noe å si hvor du feiler

augustl11:02:14

erlang, som ikke handler om annet enn å sende imperative meldinger rundt om kring, er veldig på fail early. Fail early er nødvendig i et imperativt system?

augustl11:02:38

dette føles som en bloggpost som bør skrives

hanDerPeder11:02:52

I Anteo planlegger vi å teste ut regimet nolan kjører på vouch; react komponenter utviklet i storybook og cljs i data laget. Setter opp boilerplate nå og er usikker på om typescript er verd den ekstra kompleksiteten.

slipset13:02:51

Vi bruker rxjs sammen med react. Du kan sammenligne det med reagent atoms som betyr at du kan ha “standalone” komponenter som får data’ene sine via andre måter enn den ene store global state. Mulig dette er standard React også, det vet jeg ikke.

slipset13:02:02

Basically, så har vi en connect funksjon som tar en React component og en rxjs stream og gjør at verdiene på streamen blir props til komponenten, og connect returnerer en ny React component.

slipset13:02:40

Noe som vel gir deg “urene” komponenter, men som gjør at man ikke behøver å vite alt om alle på toppnivå?

slipset13:02:46

@holyjak with TS, I’m not sure this is a greater problem than with spec. You can compose types with the & operator, and you can Pluck props (much like select in spec2), so you could get away with not at least naming everything you’re not intersted in.

👍 1
msolli14:02:21

Nå har jeg kjøpt billett til ClojureD. Blir min første clojurekonferanse. Gleder meg veldig. Noen andre som skal?

Jakub Holý (HolyJak)14:02:02

Jeg har sendt forslag til et foredrag så om det blit godtatt, blir jeg med...

slipset14:02:09

Jeg tror vi blir en kontingent fra Ardoq.

👂 1
👌 1
🙏 2