Size: a a a

Clojure — русскоговорящее сообщество

2020 November 12

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
а второй into я бы заменил на (assoc % :base base)
но вообще может быть имело бы смысл встроить :base в каждую валюту конфига при считывании, чтобы не плясать потом
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Может это превратить в функцию, которая получает урл и называется
"get-cbr-currency-map"?

И меня бесит -> после которого всё идет с новой строки а не с той же. Я бы перенес curl/get на ту же строку что и ->
`Может это превратить в функцию, которая получает урл и называется
"get-cbr-currency-map"?`
up to you 😊
источник

IG

Ivan Grishaev in Clojure — русскоговорящее сообщество
Наверное, curl сразу умеет парсить json параметром {:as :json} или аналогично
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
Ivan Grishaev
Наверное, curl сразу умеет парсить json параметром {:as :json} или аналогично
Не, это код прямо из доки курла бабашки
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Может это превратить в функцию, которая получает урл и называется
"get-cbr-currency-map"?

И меня бесит -> после которого всё идет с новой строки а не с той же. Я бы перенес curl/get на ту же строку что и ->
ну, по стилю отступов единого мнения нет
я при переходе с других языков сначала писал в столбик, потом традиционная лисповая запись вытягивать цепочки в строку мне понравилась больше
поэтому я не пишу -> на отдельной строке, никогда 😊
источник

T

The2lb3oz4dr10½grOfH... in Clojure — русскоговорящее сообщество
The2lb3oz4dr10½grOfHedgehogs
Может это превратить в функцию, которая получает урл и называется
"get-cbr-currency-map"?

И меня бесит -> после которого всё идет с новой строки а не с той же. Я бы перенес curl/get на ту же строку что и ->
И затем передавать её в функцию rate как аргумент (ну а туда из format-rate как аргумент)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
`Может это превратить в функцию, которая получает урл и называется
"get-cbr-currency-map"?`
up to you 😊
точнее не to you, а к автору скрипта, сорри
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
вы тут немного упоролись по идеоматичности и кодстайлу полностью проигнорировав обработку ошибок
❯ bb rates.bb
----- Error --------------------------------------------------------------------
Type:     java.lang.NullPointerException
Location: /private/tmp/rates.bb:30:10

----- Context ------------------------------------------------------------------
26:   ([currency]
27:    (if (= (keyword currency) :RUB)
28:        1.0
29:        (let [{:keys [Value Nominal]} ((keyword currency) currency-map)]
30:          (/ Value Nominal))))
            ^---
31:   ([currency base]
32:    (/ (rate currency) (rate base)))
33:   ([currency base nominal]
34:    (* nominal (rate currency base))))
35:

----- Locals -------------------------------------------------------------------
currency: "IDR"
map__2:   nil
Nominal:  nil
Value:    nil

----- Stack trace --------------------------------------------------------------
clojure.core//      - <built-in>
user/rate           - /private/tmp/rates.bb:30:10
user/rate           - /private/tmp/rates.bb:25:1
user                - /private/tmp/rates.bb:32:7
clojure.core//      - <built-in>
...
user                - /private/tmp/rates.bb:44:27
clojure.core/into   - <built-in>
user                - /private/tmp/rates.bb:44:15
clojure.core/mapcat - <built-in>
user                - /private/tmp/rates.bb:42:3
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну для этого, наверное, скрипт нужно запускать, а нам всем это лень 😊
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Kirill Chernyshov
вы тут немного упоролись по идеоматичности и кодстайлу полностью проигнорировав обработку ошибок
❯ bb rates.bb
----- Error --------------------------------------------------------------------
Type:     java.lang.NullPointerException
Location: /private/tmp/rates.bb:30:10

----- Context ------------------------------------------------------------------
26:   ([currency]
27:    (if (= (keyword currency) :RUB)
28:        1.0
29:        (let [{:keys [Value Nominal]} ((keyword currency) currency-map)]
30:          (/ Value Nominal))))
            ^---
31:   ([currency base]
32:    (/ (rate currency) (rate base)))
33:   ([currency base nominal]
34:    (* nominal (rate currency base))))
35:

----- Locals -------------------------------------------------------------------
currency: "IDR"
map__2:   nil
Nominal:  nil
Value:    nil

----- Stack trace --------------------------------------------------------------
clojure.core//      - <built-in>
user/rate           - /private/tmp/rates.bb:30:10
user/rate           - /private/tmp/rates.bb:25:1
user                - /private/tmp/rates.bb:32:7
clojure.core//      - <built-in>
...
user                - /private/tmp/rates.bb:44:27
clojure.core/into   - <built-in>
user                - /private/tmp/rates.bb:44:15
clojure.core/mapcat - <built-in>
user                - /private/tmp/rates.bb:42:3
Разве так не всегда?
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
хм… достаточно внимательно на скрипт посмотреть и отметить в голове места которые могут взорваться
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
а их тут много
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
happy path наше всё
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Я не смотрел, честно скажу
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Но здесь опять вопрос про то, насколько это критично
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
а потом появляются статейки типа Software disenchantment (
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
Но здесь опять вопрос про то, насколько это критично
серьезно? надо смотреть насколько критично появление NPE?
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
🤷 Ошибки важно обрабатывать, но если это скрипт для себя и это не критично — тогда можно проработать happy path и не мучаться. Конкретно здесь всё упирается в ресурсы и приоритеты.
источник

KC

Kirill Chernyshov in Clojure — русскоговорящее сообщество
Oleg Roshchupkin
🤷 Ошибки важно обрабатывать, но если это скрипт для себя и это не критично — тогда можно проработать happy path и не мучаться. Конкретно здесь всё упирается в ресурсы и приоритеты.
по твоему выходит — лучше думать про соответствие кодстайлу а не про то насколько корректна программа?
источник

OR

Oleg Roshchupkin in Clojure — русскоговорящее сообщество
Откуда ты вывел кодстайл?
источник