Fork me on GitHub
#clojure-russia
<
2015-11-16
>
oxgrouby05:11:31

@artofshine: могу наврать, по почему-то мне кажется что для мультиметодов должна быть динамическая типизация, там же в рантайме определяется какой метод дёргается

dottedmag09:11:01

@oxgrouby: Мультиметод (в общем виде) - это просто диспетчеризация по типу более, чем одного аргумента.

oxgrouby10:11:47

> Как видно, программисты-функциональщики пишущие на Clojure, Lisp и Scala — самые утонченные и экзальтированные особы. Их код похож на нежные лепестки белых роз, а сами они, когда кодят, закатывают глаза от неодолимых приступов удовольствия.

oxgrouby10:11:50

всё правильно

Kira Sotnikov10:11:20

хах заквотил

malch10:11:16

Супер! 😄

artemyarulin10:11:59

по поводу хаскеля - зацените какая няша: https://github.com/Frege/frege И даже вот так: https://github.com/Frege/frege-lein-plugin

oxgrouby10:11:23

о, не знал про плагин, интересно

artemyarulin10:11:10

я прям загорелся - чистое ядро приложения можно на фреге, а взаимодействие с внешним миром уже можно на кложуре запилить

oxgrouby11:11:26

идея классная, но не раскрыта тема - зачем фрег если уже есть кложура)

dottedmag11:11:37

Хочется иногда, чтобы компилятор ловил 98.75% багов.

oxgrouby11:11:03

core.typed?

dottedmag11:11:22

Это 17.84% :)

oxgrouby11:11:36

а какие он не поймает?

malch11:11:45

78% чисел в статистике берут из головы

oxgrouby11:11:35

вот интересно было бы для того чтобы юзать код который написан только на хаскелле, какие-нибудь там суперкрутые либы, вот только не знаю насколько там всё хорошо с совместимостью

oxgrouby11:11:07

и то, вернёт какую-нибудь шмонаду и разбирайся с ней пол-ночи.

oxgrouby11:11:52

https://github.com/begriffs/postgrest хочу чтобы работал под frege )

dottedmag11:11:38

Так это же просто приложение, зачем его под frege запускать?

oxgrouby11:11:23

потому что я не умею если что тюнить хаскель, не представляю какие подводные камни %)

dottedmag11:11:42

Я тебя уверяю, что под frege подводные камни будут ровно такими же.

oxgrouby11:11:14

ну, там хотя бы наверное можно опустится на уровень жабы

dottedmag11:11:42

Потому что код, который выдаёт любой компилятор хаскела, настолько не похож на код, который выдают компиляторы обычных языков, что тюнинг всё равно остаётся на уровне хаскельного рантайма.

oxgrouby11:11:32

ну тогда ладно, не надо %)

artemyarulin11:11:59

да не - проще точно не будет simple_smile Но типы иногда охота да. Clojure + Sсala слишком попсово, а вот clojure + Frege по хипсторски и мужики зауважают и вааще

artemyarulin11:11:51

я давно хаскель попробовать хотел просто - но там нужно сразу принять факт что кода в продакшене ты не увидешь. А тут сделал либу для JVM и юзайте кто хочет

malch11:11:14

@artemyarulin Еще Kotlin есть, правда у меня с ним опыт небольшой

rm11:11:38

еще бы был большой, ему же без году неделя

artemyarulin11:11:27

https://en.wikipedia.org/wiki/Free_Pascal вот этот тоже поддерживает JVM и совсем не молод simple_smile

malch11:11:37

Да не, его уже давно в JetBrains пилят

Kira Sotnikov11:11:37

clotify.core> (let [ config (get-in-config "config.edn")]
               (twilio-request (:twilio config) "+79991717973" "HEY"))
              
trying to send message
#object[clojure.core$promise$reify__6779 0x3a6eddfe {:status :pending, :val nil}]

Kira Sotnikov11:11:41

(defn twilio-request
  [config phone msg]
  (let [ url-base (:url-base config)
        sid (:sid config)
        token (:token config)
        from (:from config)]
    (def options {:timeout 200             ; ms
                  :basic-auth [sid token]
                  :user-agent "clotify23"
                  :form-params {:From from
                                :To phone
                                :Body msg}})
    (println "trying to send message")
    (http/post url-base options
          (fn [{:keys [status headers body error]}] ;; asynchronous response handling
            (if error
              (println "Failed, exception is " error)
              (println "Async HTTP POST: " status))))))

Kira Sotnikov11:11:06

Почему если оно успешно оно мне не печатает "Async HTTP POST: " status

oxgrouby11:11:33

оно запускается в не-main-потоке, видимо

oxgrouby11:11:03

т.е. хандлер выполняется в каком-то тредпуле

Kira Sotnikov11:11:24

но вон тот выхлоп из репла значит что запрос сделан?

Kira Sotnikov11:11:32

#object[clojure.core$promise$reify__6779 0x3a6eddfe {:status :pending, :val nil}]

oxgrouby11:11:43

запрос - да, но ответ - не факт

Kira Sotnikov11:11:00

переделал на хттп-кит вообще перестало работать ._.

oxgrouby11:11:12

оно работает скорее всего

oxgrouby11:11:25

другое дело что просто ты не видишь результата

artemyarulin11:11:36

поставь http sniffer то любой и посмотри

oxgrouby11:11:08

как-то слишком хардкорно, лучше просто библиотеку для логинга заюзать да и залогировать ответ

Kira Sotnikov11:11:05

так я не вижу логов в дашборде сервиса и не вижу смски моей

oxgrouby11:11:34

потому что принтлном логируешь, видимо

oxgrouby11:11:51

он не умеет из другого потока выводить

Kira Sotnikov11:11:58

[clojure.tools.logging :as log]

Kira Sotnikov11:11:01

а вот это?

oxgrouby11:11:04

а это должно

Kira Sotnikov11:11:08

ок, попробуем

p.lebedev20:11:15

1 280 000руб - солидол 😃

artemyarulin20:11:45

горячие обсуждения на тему PureScript vs ClojureScript, Servant vs Spock, EMACS vs VIM
канонично