Aktywne Wpisy
tormentorer +5
Jestem takim nieszczególnie żarliwym Katolikiem, ale coś mnie trafia, jak czytam że w Polsce,kraju, który wyrósł i uformował swoją tożsamość na barkach chrystianizacji, jakiś watażka zabrania wieszania krzyży w urzędach publicznych - niech by ktoś spróbował wywinąć taki numer w takich Niemczech, dajmy na to Bawarii - w super zlaicyzowanym społeczeństwie, to pogoniliby dziada bez mrugnięcia okiem. Dlatego apeluję - nie głosujmy na takie indywidua- i pamiętajmy o swoich korzeniach. 8 gwiazdek,
Marek_Tempe +8
Lepiej z mądrym zgubić, niż z głupim znaleźć.
Początkowo miało mi to zająć 3 dni, a pochłonęło miesiąc. Pierwotnie chciałem korzystać z biblioteki Money od Clojurewerkz, która bazuje na javowej Joda Money. Niestety klasy w tej ostatniej są pozamykane, a twórca dopuszcza jedynie waluty zaaprobowane przez komitet ISO (a inne niż trzyliterowe kody walut są pewnie niezłą herezją). Po paru próbach przerabiania Joda Money, zmieniłem taktykę i zacząłem robić odrębnego liba, który zależy od BigDecimal, a nie jakiejś monetarnej biblioteki Javy.
Enjoy!
https://github.com/randomseed-io/bankster
Ciekawostka:
Przy okazji na przeróżnych forach i na Stack Overflow trafiłem na porady odnośnie zaokrąglania liczb dziesiętnych, które mnie trochę przestraszyły, że ktoś je wprowadził, a ja nieświadomie i pośrednio korzystam z tego softu. Chodzi o radzenie sobie z dzieleniem, gdy rezultatem będzie nieskończone rozwinięcie dziesiętne (np. 1 / 3). Szablonową podpowiedzią jest dodanie do wywołania metody parametru zaokrąglania i sztywnej skali. I tu pojawia się ukryty problem, bo to zaokrąglanie będzie działało również dla wartości, które miałyby skończone rozwinięcie (np. 1 / 8), chociaż wychodzące trochę poza skalę. Będzie to się sprawdzało w jednych dziedzinach (podatki?), a w innych (wielokrotne przeliczanie, np. 1 / 8 / 0.5) spowoduje, że zaczną nam znikać lub pojawiać się wartości, których nie chcemy i wtedy sens korzystania z powolnych lecz bezpiecznych obiektów BigDecimal (zamiast np. z double) do liczenia pieniędzy może być zaprzepaszczony.
#programowanie #programowaniefunkcyjne #fp #biblioteka #pieniadze #waluty #kryptowaluty #freesoftware #wolneoprogramowanie #floss #btc #eth
Myślę, że ciężej przywyknąć do idiomów, że np. (seq x) sprawdza pustość, ale dla indeksowanych kolekcji lub z licznikiem elementów szybciej będzie (zero? (count x)). Jest też parę polimorficznych funkcji, jak conj, które zależnie od argumentu dają różne wyjścia, ale np. dla nil dają listę. Mi się Clojure podoba, bo ma clojure.spec i podobne.