Fork me on GitHub
#clojure-norway
<
2023-03-29
>
slipset08:03:20

morn, morn

magnars08:03:41

morn morn! ❄️

teodorlu08:03:26

Jeg skrev litt om teknisk prototyping, på norsk: https://play.teod.eu/tre-prinsipper-for-teknisk-prototyping/ Ser for meg at mange her kan ha gode erfaringer og meninger om hvordan man skal gå fram når man har et litt vanskelig problem man trenger å angripe!

2food10:03:28

God formiddag! Jeg har lurket her en stund, men på tide å si hei 😄 Jeg har skrevet mitt første clojure-bibliotek. Det løser et problem vi hadde i Anteo hvor vi hadde mange tall flytende rundt i systemet og det var lett å surre til enheter og konvertering. Sjekk det gjerne ut og kom med tilbakemelding! https://github.com/anteoas/broch

14
💯 2
🐟 2
partyparrot 2
magnars10:03:49

Spennende! Det ser veldig nyttig ut. 👌 🙂

☺️ 2
teodorlu11:03:42

Oi, kult! Dette har jeg også prøvd på før (https://github.com/mentat-collective/emmy/issues/46, https://github.com/sicmutils/sicmutils/pull/213, https://github.com/teodorlu/siunit.alpha1/blob/master/src/teodorlu/siunit/alpha1.clj), uten at jeg følte at jeg helt fikk det helt til. Interessant at du "konstruerer" litt som man gjør i time-biblioteker:

(b/meters 10) ;=> #broch/quantity[10 "m"]
#broch/quantity[10 "m"] ;=> #broch/quantity[10 "m"]
(b/feet (b/meters 10)) ;=> #broch/quantity[32.8083989501 "ft"]
(b/meters (b/seconds 3)) ;=> ExceptionInfo "Cannot convert :time into :length"
tror @U017QJZ9M7W fremdeles er gira på å få enheter inn i https://github.com/mentat-collective/emmy/.

teodorlu11:03:59

Det er også mulig å definere +, *, / og - på tall med enheter (quantities) på en måte som gir mening:

(let [k 10e3
        N (* :kg :m {:s -2})]
    (/ (* 12000 {:kg 1 :m 1 :s -2})
       k N))
  ;; => {:quantity 1.2, :unit {}}
her er *, +, / og - fra teodorlu.siunit.alpha1, ikke fra clojure.core. Edit: ser at dere https://github.com/anteoas/broch/blob/3982e30732ca62863f260d2bbccc5b99787fc212/src/broch/core.clj#L54-L57 🙂
(defn *
  ([x] x)
  ([x y] (impl/boxed-arithmetic x y clojure.core/*))
  ([x y & more] (reduce * (* x y) more)))

teodorlu11:03:56

Dette er skikkelig spennende å lese! 😁

🥳 2
2food11:03:20

@U3X7174KS kult at du har vært inne på veldig lignende ideer! Overloading av +-*/ fungerer veldig fint. Bare litt irriterende at dette ikke er i en protocol man kunne extendet for å bruke de innebygde i clojure.core.

2
emil0r17:03:02

Det är jag glad över 🙂 . Du kan overloada i C++ och det gjorde alltid koden mer komplex