@haskellru

Страница 326 из 1551
Dmitry
19.07.2017
10:27:54
кто нибудь умеет в postgresql-simple array-и биндить?

Aleksey
19.07.2017
11:16:14
Как получить некотрую определённую (а не локальную) TimeZone (чтобы потом делать UTCTime -> ZonedTime)?

Dmitry
19.07.2017
15:23:16
#haskell #postgresql #postgresql-simple #wtf Неведомым образом вот это: https://gist.github.com/voidlizard/139dfef9db7c60af147694a85b27cc6d работает в несколько раз быстрее, чем вот это: https://gist.github.com/voidlizard/437e916a0f46be115a6d9529011ec688 понять это нельзя, поэтому надо запомнить

Наш уютненький, кстати, просто люто стал распараллеливать вычисления. Несколько лет назад -threaded и какой-нибудь using parList только пессимизировало программу. А теперь всё реально ускоряется пропорционально потокам.

Google
Misha
19.07.2017
15:32:29
экхм... а в логе постгреса есть запрос, который реально выполняется?

Dmitry
19.07.2017
15:32:50
да фиг его знает. я не думаю, что тут дело в постгресе, хотя легко поставить эксперимент

ну т.е дело в заливке внутрь постгреса большого массива

снаружи.

Misha
19.07.2017
15:33:21
скорее всего в драйвере конечно, но очень интересно чего он там намудрил

Dmitry
19.07.2017
15:33:36
postgresql-simple, конечно, шляпа.

советуют тут hasql - кто-то может что-то про него сказать?

Aleksey
19.07.2017
15:40:03
hasql сильно opinionated

Запросы строятся на стрелках вместо монадки, например

Dmitry
19.07.2017
15:40:26
ой

Aleksey
19.07.2017
15:41:07
Это мешает, например, поиметь монадический код с логированием внутри кода, строящего сложный запрос

Но за счёт бинарного протокола обмена с psql иногда бывает профит - если запросы большие

kir
19.07.2017
15:46:38
Стоп. Оно же instance ArrowApply. Можно завернуть стрелку в ArrowMonad, пользоваться инстансом ArrowApply a => Monad (ArrowMonad a) и пользоваться как монадой, я думаю.

Google
Aleksey
19.07.2017
15:47:29
Хмм. Я давненько смотрел, признаю. Тогда мне не удалось сходу такое провернуть

kir
19.07.2017
15:49:27
В документации к ArrowApply пишут, что > The ArrowApply class is equivalent to Monad: any monad gives rise to a Kleisli arrow, and any instance of ArrowApply defines a monad.

https://hackage.haskell.org/package/base-4.9.0.0/docs/Control-Arrow.html#t:ArrowMonad

Denis
19.07.2017
15:50:54
ArrowApply это же почти как $ только для разных видов

Aleksey
19.07.2017
16:06:26
Ну ок, так я втащу Query в монадический код. Но надо то монадку (скажем, логгера или ридера) втащить внутрь стрелочного do, в котором строится запрос

Внутри монадического кода можно и просто запрос выполнить - получится IO.

Чуть-чуть проще с транзакциями - там Monad есть.

Может, конечно, это идея такая - строить Query отдельно от монадического кода...

Dmitry
19.07.2017
16:24:34
Ну идея в принципе норм

kir
19.07.2017
16:44:05
Логгер-то можно и к (ArrowMonad (Query a)) прицепить и lift-ом всё, кроме логирования, поднять. Тем более, что там только 1 метод - statement.

Leonid
19.07.2017
17:16:45
я уже запутался в чатиках

kir
19.07.2017
17:22:10
Тут главное, что люди всё те же

Max
19.07.2017
17:31:05
А какой еще чатег есть?

Eugene
19.07.2017
17:39:26
Как понять монады?

Vasiliy
19.07.2017
17:41:10
писать код и не морочить себе голову

Vladimir
19.07.2017
17:41:25
Как понять монады?
http://dev.stephendiehl.com/hask/#eightfold-path-to-monad-satori

Max
19.07.2017
17:43:47
А чего их понимать? Монада - это просто цепочка вычислений с состоянием. ))

Denis
19.07.2017
17:44:13
или способ комбинировать сайд эффекты

Max
19.07.2017
17:44:17
В отличии от аппликативных функторов, которые без состояния

(спрятался)

Google
? animufag ?
19.07.2017
17:45:33
Как понять монады?
если был матан на первом курсе, то можешь вспомнить что там были всякие группы/полугруппы/решётки/моноиды. и лектор такой сначала рассказывал что такое решётка, а потом показывал что числа образуют решётку и все такие ура, мы только что выучили новое понятие и тут же обнаружили, что привычные нам числа принадлежат этому понятию. свойств новых это не даёт, просто выучили и двигаемся дальше по курсу

Max
19.07.2017
17:46:47
У меня не было матана...

? animufag ?
19.07.2017
17:47:12
с монадами то же самое. есть монады (несколько операций и несколько законов) есть IO - те побочные эффекты которыми всю жизнь пользовался и IO вписывается в понятие монады

и + ещё специальный синтаксис введён, так что другие монады тоже имеет свой прикол использовать

Max
19.07.2017
17:48:55
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html

? animufag ?
19.07.2017
17:49:48
Чет у вас какой-то крутой был первый курс. У меня были матрицы, интегралы, пределы и ещё какая-то хрень
матрицы из линала и в линале рассказывают все эти понятия. с решёткой я на самом деле немного не то сказал, но лично в моём курсе она мне больше всего понравилась тем, что понятие вводится и больше не переиспользуются. ну потом ещё в дискретке вроде встретилось

Denis
19.07.2017
17:50:16
ну вроде кольца группы и полугруппы с полями я помню

Max
19.07.2017
17:50:36
Пора открывать клуб онанимных не-математиков ))

Vladimir
19.07.2017
17:51:20
А чего их понимать? Монада - это просто цепочка вычислений с состоянием. ))
не слушайте. про "цепочку вычислений" и про состояние написано тут https://wiki.haskell.org/What_a_Monad_is_not

Igor
19.07.2017
17:51:54
Как понять монады?
Советую посмотреть https://youtu.be/PlFgKV0ZXoE (но лучше все видео с начала)

Vladimir
19.07.2017
17:51:58
http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
очередной "monad tutorial" с картинками и аналогиями который только запутывает

Тёма
19.07.2017
17:52:08
Выше где-то упоминали Applicative. Вот да, надо про него сначала почитать.

Vladimir
19.07.2017
17:52:39
аналогий и картинок быть не может, потому что монады это нечто очень абстрактное

? animufag ?
19.07.2017
17:52:54
Пора открывать клуб онанимных не-математиков ))
кстати думаю норм челы видят местный уровень и ливают, остаются люди с поверхностным суждением вроде меня и говорят свободно о всём подряд

Vladimir
19.07.2017
17:53:23
ещё раз, вот самый честный ответ на вопрос: http://dev.stephendiehl.com/hask/#eightfold-path-to-monad-satori без выебонов, картинок, авторского тщеславия

Denis
19.07.2017
17:53:50
лучше понять как юзать ту или иную монаду, а на общем случае не понимать)

Leonid
19.07.2017
17:54:54
композиция функций (.) :: (b - > c) -> (a -> b) -> a -> c композиция монадных функций (<=<) :: (b -> m c) -> (a -> m b) -> a -> m c вот и все монады

Igor
19.07.2017
17:55:29
Как понять монады?
Ну и в догонку (но опять таки с конца будет не понятно) https://youtu.be/gHiyzctYqZ0

Google
Max
19.07.2017
17:56:02
Не, ребят, я понимаю, что Монада - это нечто абстрактное, вон Дима, помнится, давал определение через класс типов. И понятно, что сводить в вычислению с состоянием - это некошерное обобщение. Но тут мне кажется от частного к общему топать проще, не?

Max
19.07.2017
17:57:59
Понятно. Надо все-таки дослушать про типизированные лямбды и прочесть Пирса.

Leonid
19.07.2017
17:58:14
если объясняя монады в хаскеле вам начинают втирать про ТК, сразу говорите "ой, всё" и меняйте тему

Max
19.07.2017
17:59:17
А если попросят "обосновать отказ"?

? animufag ?
19.07.2017
18:00:52
притвориться спящим

Denis
19.07.2017
18:01:32
притворись гусенеценей, а она притворится веткой и никто не отличит ее от ветки на земле

Admin
ERROR: S client not available

Leonid
19.07.2017
18:02:41
тогда просишь пояснить за шмот и начинаешь мерзенько гнусавить

Max
19.07.2017
18:03:03
Index
19.07.2017
18:03:20
найди мне в Proxy состояние

а инстанс монады-то есть

Max
19.07.2017
18:03:37
С вертушки в щи можно? Или просто моноклем побить?

Index
19.07.2017
18:03:50
а?

? animufag ?
19.07.2017
18:04:06
поэтому лучше говорить "монада позволяет выразить..." вместо "монада – это..."

Index
19.07.2017
18:04:07
все можно, а Proxy все равно монада без состояния

Так монады много чего позволяют выразить, нельзя понять их по 1-2 примерам

Это как сказать: смотри в зеркало, вот нос — он один, а вот глаза — их два. Все, ты считай понял calculus

? animufag ?
19.07.2017
18:05:22
ну человек утверждает что апликативы не позваляют

Google
Index
19.07.2017
18:05:40
Так позволяют, State s это аппликатив

Max
19.07.2017
18:05:42
Ну вот, опять магия включилась

За это вас, хаскелистов, и не любят ))

Index
19.07.2017
18:06:14
И можно даже stateful штуки сделать с ним, например put 10 *> modify (*2) *> get

Max
19.07.2017
18:06:17
Быдлее надо быть.

Index
19.07.2017
18:07:19
Да кем угодно можно быть, а монады от этого не стали "вычислениями с состоянием"

Т.е. я понимаю, что у тебя там что-то в голове творится и ты что-то понимаешь про вычисления, но это не монады.

И людей в заблуждение лучше не вводить

Max
19.07.2017
18:08:20
"Хер знает, что такое моднады на самом деле, а в нашем богоугодном хаскеле мы считаем их типами с определенным интерфейсом"

А искренне заблуждаться можно?

Или сразу к оскорблениям перейдем? ))

Index
19.07.2017
18:09:35
Заблуждения на пустом месте не возникают, вот монада — это моноид в категории эндофункторов, а остальные определения — посредственные аппроксимации.

Max
19.07.2017
18:09:51
Вот

Стоп-игра

Начинаем декомпозировать

Что такое эндофунктор?

Index
19.07.2017
18:10:58
Это функтор из некоторой категории в себя

Max
19.07.2017
18:11:50
Что такое функтор?

Denis
19.07.2017
18:12:12
это морфизм между 2категориями

Max
19.07.2017
18:12:31
Ага

Index
19.07.2017
18:12:33
Это сопоставление одной категории другой. Объекты в объекты, морфизмы в морфизмы, композицию в композицию.

Страница 326 из 1551