
Denis
26.09.2017
17:09:20

Vasiliy
26.09.2017
17:09:46

Denis
26.09.2017
17:10:06
юзкейс

Vasiliy
26.09.2017
17:11:16
есть некоторый MonadState a x, есть некоторый MonadState s x, причём a - часть s

Google

Vasiliy
26.09.2017
17:11:27
zoom позволяет их соединить

Denis
26.09.2017
17:12:14
а получить список чисел можно так [(10, "hello"), (20, " "), (30, "world")] ^..traverse._1

Vasiliy
26.09.2017
17:12:27
конкретно в моём случае был magnify, соответственно, вместо MonadState был MonadReader
в ридере большой конфиг, который состоит из "подконфигов", соответственно, функция, которая по этому конфигу настраивает некоторую систему, вовсю использует функции, работающие с подконфигами, с помощью magnify

Denis
26.09.2017
17:14:13

Vasiliy
26.09.2017
17:15:00
что-то типа setupStand = do magnify server setupServer; magnify client1 setupClient; magnify client2 setupClient
по-моему, у габриэля в статье про императивное программирование с линзами есть примеры зума
вот в этой http://www.haskellforall.com/2013/05/program-imperatively-using-haskell.html

ParkeT
26.09.2017
17:21:48

kana
26.09.2017
17:24:25
Понял, откуда там в траверсе взялся Mononid. Это у Конста есть инстанс Аппликатива при условии, что параметр - моноид

Vasiliy
26.09.2017
17:27:18
значит, теперь не составит труда написать toListOf
также известный как (^..)

kana
26.09.2017
17:28:26
Вопрос по реализации аппликативного конста - почему он так странно написан?
(<*>) = coerce (mappend :: m -> m -> m)
Когда можно было вот так:
(<*>) (Const a) (Const b) = Const (a <> b)

Google

illiatshurotshka❄️
26.09.2017
17:31:19
может быстрее?

Denis
26.09.2017
17:32:20
коерц это как раз делает без переупаковок
кстати можно определить foldMapOf а из него view :D
view l = foldMapOf l id
О!
я вспомнил о одной кате
https://www.codewars.com/kata/lensmaker/haskell

illiatshurotshka❄️
26.09.2017
17:38:50
каты это типо наборы заданий?

Denis
26.09.2017
17:39:47
ну да

? animufag ?
26.09.2017
17:42:25
как-то странно в таком месте вдруг за перфоманс взяться

illiatshurotshka❄️
26.09.2017
17:46:37

Denis
26.09.2017
17:46:58
ага по рекурсивным схемам

illiatshurotshka❄️
26.09.2017
17:47:46
о
давай

Denis
26.09.2017
17:51:20
https://www.codewars.com/kata/54f1fdb7f29358dd1f00015d
https://www.codewars.com/kata/54289bfc929cdbbbfd000213
https://www.codewars.com/kata/547a77a6b84a1fb8bf000211
https://www.codewars.com/kata/51ba717bb08c1cd60f00002f
https://www.codewars.com/kata/555b1890a75b930e63000023
https://www.codewars.com/kata/5424e3bc430ca2e577000048
https://www.codewars.com/kata/526156943dfe7ce06200063e

Vasiliy
26.09.2017
17:53:42
Детям и девушкам можно посоветовать codingame

kana
26.09.2017
18:07:50

Google

Artyom
26.09.2017
18:09:16
ну тут не до максимума обобщено, если что

kana
26.09.2017
18:10:03
Да, еще можно Applicative использовать

Artyom
26.09.2017
18:10:26
ага, ок

Denis
26.09.2017
18:15:29
так можно и обычный traverse юзать?

Artyom
26.09.2017
18:15:44
ага

kana
26.09.2017
18:16:01
Можно, а что?

Artyom
26.09.2017
18:16:46
@xgrommx traverse – это полноценный травёрсал в van laarhoven линзах
(а в профункторных, например – нет)
(и Кметт всегда говорит, что мол конечно профункторные линзы хорошо, но круто ведь, что traverse – это травёрсал, и что можно определять травёрсалы без lens)

Denis
26.09.2017
18:18:13

Alexander
26.09.2017
18:18:14
о Артём вернулся

Artyom
26.09.2017
18:19:11
@qnikst ага, я вышел, потому что чатик чуток сильно бесконечно отвлекал
@xgrommx а какую часть не понял? ?

Alexander
26.09.2017
18:19:40
иногда думаю делать так же

Denis
26.09.2017
18:20:16

Artyom
26.09.2017
18:21:11
ну traverse хочет функцию, а профункторные линзы должны работать с любым профунктором
вообще, в профункторных линзах:
• линзы простые
• призмы простые
• а вот травёрсалы какие-то очень непростые, я даже не начинал разбираться
если хочется почитать, то либо http://oleg.fi/gists/posts/2017-04-18-glassery.html#traversal, либо https://hackage.haskell.org/package/mezzolens

Pig
26.09.2017
18:27:23
Что означает rating 2.0 и/или λ λ λ?

Denis
26.09.2017
18:28:05

Artyom
26.09.2017
18:28:06
что несколько людей нажали на вторую лямбду
(или на первую и третью)
это рейтинги библиотек прикрутили к Hackage
не очень давно

Google

Artyom
26.09.2017
18:30:18
https://github.com/haskell/hackage-server/pull/609
раньше просто была кнопочка “vote for this package” неприметная и считалось количество голосов
и ещё в поиске это показывается теперь

Alexander
26.09.2017
18:42:03
кстати бесит когда реэеспорт из other-module
в итоге через hackage сорцов не видно

Denis
26.09.2017
18:42:12
или хитро
import A as X
import B as X
import C as X

kana
26.09.2017
19:03:46

Alexander
26.09.2017
19:04:21
вообще other-module очень бесит
почему людям с .Internal не живется

kana
26.09.2017
19:04:30
Вообще это довольно странно, так мб делают для удобства, но это нифига неверно. В смысла, когда модуль поставляют больше, чем нужно

Alexander
26.09.2017
19:04:41
вечно забывают что-нить экспортировать
для линз я точно не знаю почему
для сложных структур с хитрыми внутренностями ещё можно понять
там поломать все можно

Artyom
26.09.2017
19:05:51
у линз нету other-modules
Кметт тоже их не любит
у него даже talk есть про то, как он их не любит

Google

Alexander
26.09.2017
19:10:03
но Const в Data.Functor.Const же живет?
в base

Artyom
26.09.2017
19:10:42
это да

kana
26.09.2017
20:36:07
начал смотреть на призмы, а там сразу козвезды, чойсы, профункторы. До этого все было так легко

Дмитрий
26.09.2017
20:36:21
А оно просто сразу и требуется
Одних линз недостаточно
Плюс у большинства из них довольно простые концепции

Yuriy
26.09.2017
20:47:11

Даниил
26.09.2017
20:52:39
во всех чатах телеграма

Hot
26.09.2017
21:08:28
Да ОНО вообще повсюду.

Aleksey
27.09.2017
04:14:56
"Динамическая vs строгая" меня тоже коробит, я бы тоже за клоуном полез
- Что ты там ляпнул, клоун? Эти качества ортогональны! Ты куда побежал?

Yuriy
27.09.2017
05:31:19

Дмитрий
27.09.2017
05:33:49
"Сильная типизация - это та, которая нравится мне"

Yuriy
27.09.2017
05:37:47
нет, у сильной есть определение

Дмитрий
27.09.2017
05:43:05
Цитата, о общей бессмысленности споров о терминологиях типизации. Определения есть разумеется, но в голове у оппонентов регулярно оказываются совершенно разные трактовки, сводящиеся к цитате выше
Ввиду чего дискуссии часто становятся контрпродуктивными (хотя конечно же ничего сложного в этих понятиях нет)

Aleksey
27.09.2017
06:22:33
@cblp "Строгая" == "Сильная" == "Strong" в паре с "типизация", смирись уже (я вот мирюсь) :)
"Строгая динамическая типизация" - уже устоявшееся словосочетание, пусть и неверное.