Fork me on GitHub
#clojure-russia
<
2017-05-01
>
misha09:05:53

кто-то недавно спрашивал, как с ошибками работать в цепочках асинхронных запросов: https://youtu.be/E8I19uA-wGY?t=2175

artemyarulin09:05:49

дак монады да или там чота новое чувак грит? (классный кста мужик - 100500 клевых статей и през на его сайте http://fsharpforfunandprofit.com)

misha09:05:36

конечно монады, он просто очень плавно и понятно между стандартным примером с кучей ифочек в монады переходит

artemyarulin09:05:22

а ну да, я наверно по его докладам и понял монады наконец, по крайней мере Maybe/Either

artemyarulin09:05:04

оффтоп: Никто не пробовал F#? Как оно вааще? У меня счас бекэнд ком на C#, грусть и печаль, может F# протащить ?:)

andmed10:05:47

@misha круто, как раз в тему, 2artemyarulin : переходи на жаву, современную, реактивную

artemyarulin11:05:25

да неа, у нас бекэндщики жаву не могут да и если JVM то мы все знаем какой язык надо брать 🙂

malch12:05:14

@artemyarulin frege? ceylon? fantom?

dottedmag12:05:10

@malch Micro Focus Visual COBOL!

fmnoise13:05:39

Scott Wlaschin да, очень крутой тип

fmnoise13:05:51

кстати, насчет монад, вчера вечером игрался с http://fluokitten.uncomplicate.org/articles/functors_applicatives_monads_in_pictures.html

fmnoise13:05:59

очень неплохая штука

artemyarulin13:05:24

To continue with the spirit of the original article, we continue by providing the Clojure version of the Learn you a Haskell for Great Good book
о ня, хотя на динамичной кложе многое проще

fmnoise13:05:47

ну просто есть эпичная статейка по монадам

fmnoise13:05:51

с картинками

fmnoise13:05:01

и примерами на хацкеле

fmnoise13:05:28

и челлендж некий типа "запили такое же для языка Х"

fmnoise13:05:00

ну и смотришь, иногда в канву основного оно вписывается, а иногда прям обнять и плакать

fmnoise13:05:20

я вот это вчера глянул, простенько, понятно

fmnoise13:05:43

не хуже хацкеля вобщем-то bicyclejesus

fmnoise13:05:48

на хабре перевод есть

fmnoise13:05:55

хотя хз чо тут переводить

fmnoise13:05:01

ну коты наверное получше будут чем этот флуокиттен, там траверсабл есть еще у них

malch13:05:30

2 + 3 = 5

malch13:05:34

все понятно же

malch13:05:22

в смысле (+ 3 2) => 5, извините

fmnoise13:05:46

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

misha15:05:12

часто для уяснения не хватает банального примера кода на js/java/python/ruby/go/ocaml (подчеркнуть нужное), чтобы на картинки замапить.

misha15:05:20

а то все объяснения монад с примерами кода на языках, где они в порядке вещей и ссапортом в языке - это как хело ворлд очередного фреймворка, с которым левее/правее хело ворлда хз что делать

misha15:05:27

For example, here's how you work with a database record in a language without Maybe:

post = Post.find_by_id(1)
if post
  return post.title
else
  return nil
end

But in Haskell:

fmap (getPostTitle) (findPost 1)

misha15:05:30

*лять

misha15:05:20

еще и Buy my book! наверху страницы...

artemyarulin15:05:44

лист кста это монада 🙂 поэтому Post.find_by_id(i).map(|p| p.title)

artemyarulin16:05:45

дак круто же - вы тут все по 100500 раз это юзали. Заместо Maybe юзаете лист/вектор. Чейните map 100 штук, если в монаде есть значние (больше нуля элементов) то все функции отработают, если массив пустой то функции не выполнятся, те что надо как раз. Так что если нужно Maybe V то проще завернуть в вектор и не париться про монады 🙂

misha16:05:39

(map inc [nil])
          
NullPointerException   clojure.lang.Numbers.ops (Numbers.java:1013)
( ͡° ͜ʖ ͡°)

dragoncube18:05:49

cljs.user=> (map inc [nil])
(1)

artemyarulin18:05:26

wtfjs, JVM такое не прощает

fmnoise19:05:18

@misha fmap надо trollface

dragoncube23:05:58

app:cljs.user=> (inc nil)
1

y.khmelevskii17:05:50

кто-то использует https://github.com/jonase/kibit ? как он?

a.espolov17:05:33

y.khmelevskii: дано не юзал, но раньше было годно

a.espolov17:05:50

не думаю что что-то поменялось

y.khmelevskii17:05:03

мне после js, чего-то на подобии eslint не хватает