Vadim
21.09.2017
13:40:22
Но линзы просто для получения данных мне кажутся бессмысленными
Для этого я использую path
andretshurotshka?❄️кде
21.09.2017
13:41:44
Denis
21.09.2017
13:42:58
хз
Google
Denis
21.09.2017
13:43:02
не проверял пока
Maxim
21.09.2017
15:14:41
Vadim
21.09.2017
15:16:57
Вычислить можно и path
рамдовский
Maxim
21.09.2017
15:18:15
А R.over ?
Редюсеры одной строкой вычислять
Дмитрий
21.09.2017
15:19:16
Vadim
21.09.2017
15:19:38
А R.over ?
Да, согласен. Для этого метода нужна линза. Просто потому что он требует именно линзу, а не просто путь.
Дмитрий
21.09.2017
15:20:07
Причём линзы можно совмещать, всё больше инкапсулируя механизмы обновления отдельных объектов
Vadim
21.09.2017
15:21:44
Maxim
21.09.2017
15:22:18
Для переиспользования
Google
Vadim
21.09.2017
15:23:10
Все в рамда для переиспользования. Я могу создать функцию-evolve, и переиспользовать ее
Maxim
21.09.2017
15:25:32
Как у еволва с композицией?
Не вижу ваианта сделать красиво
Vadim
21.09.2017
15:26:22
Дмитрий
21.09.2017
15:27:09
evolve — это просто частный случай
Очень хорошо, что твои кейсы сводятся только к объектам, у которых обновляются просто отдельные поля
Но это только часть возможных вариантов, причём далеко не самая эффективная
Vadim
21.09.2017
15:28:50
Дмитрий
21.09.2017
15:30:46
Обычные нормализованные данные, например
Хранить удобнее в одном формате, а использовать — в другом
Vadim
21.09.2017
15:37:59
Вообще я бы с радостью прочитал нормальную статью насчет применения линз. Есть полно статей объясняющих что такое линзы. Но вот насчет статей с описанием реальных случаев когда они могут быть полезны более чем просто обращение по пути я что-то не натыкался.
Kelin
22.09.2017
05:56:31
Не очень функциональный стиль, мне кажется
Композицию неудобно делать будет
kana
22.09.2017
05:58:39
Это проблема всех линз через пару (get, set)
andretshurotshka?❄️кде
22.09.2017
06:15:34
Kelin
22.09.2017
06:21:29
kana
22.09.2017
06:25:23
Google
andretshurotshka?❄️кде
22.09.2017
06:25:35
А
понял
ну gcanti дичь делает
Maxim
22.09.2017
08:18:52
пробовал кто реализовать редакс стор через линзы а не редюсеры ?
get на экшон, set на стейт ) мерджа объект из экшена в состояние
over(getSetLens,identity, state)
типа того
kana
22.09.2017
08:21:49
на элме что-то подобное писал, там предпочитают не композицию редьюсеров, а один плоский на все экшоны на всю модель. Использовал монокль. Потом отказался
Maxim
22.09.2017
08:22:36
Почему отказался ? У меня тс плохо вывозит многоуровневый комбайн редьюсерс
и я сам забывал, чего там где комбайнил
kana
22.09.2017
08:23:45
потому что в элме линзы нужно вручную писать типа
userLens =
let
get =
.user
set newUser m =
{ m | user = newUser }
in
lens get set
и я устал это делать. В js линзы можно генерировать, так что мб и использовал бы. В хаскеле есть makeLens, так что там это тем более имеет смысл
Дмитрий
22.09.2017
08:25:47
Одних только линз не достаточно для стора, нет смысла делать все только на них
Как минимум нужны ещё призмы и профункторы
Тогда только можно будет что то делать)
kana
22.09.2017
08:27:11
ну призмы там были
Denis
22.09.2017
08:30:02
вот вам часть от профунктора (контрамап) https://github.com/DrBoolean/Oh-Composable-World
Дмитрий
22.09.2017
08:32:44
Как контрвариант связан с профунктором?
Maxim
22.09.2017
08:34:41
кто такие призмы ?
Google
Denis
22.09.2017
08:35:28
Maxim
22.09.2017
08:35:36
вроде красиво и просто, думаю как под тс хоть частично типизировать
kana
22.09.2017
08:37:35
призмы это такие колинзы) Линзы для сумтипов. То есть как произведение дуально к копроиизведеню (сумме), так призмы дуальны к линзам (линзы берут часть произведения, призмы ветку)
https://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial
Дмитрий
22.09.2017
08:38:04
Красиво, под тс, выбери что то одно ?
Maxim
22.09.2017
08:40:55
Дмитрий
22.09.2017
08:44:08
const ProfunctorI: Profunctor<*, *, *, *, *>
Maxim
22.09.2017
08:44:24
ну он же выводит типы )
в тс надо таскать их, и будет 3-х этажная конструкция
Дмитрий
22.09.2017
08:45:25
Надо будет поближе посмотреть)
Denis
22.09.2017
08:48:52
что за херня? чего 4? Functor<*, *, *, *>
Maxim
22.09.2017
08:50:09
в типах описано
Denis
22.09.2017
08:51:07
* -> * вроде
Дмитрий
22.09.2017
08:52:53
Ну это не кайнды ?
Это existencial operator в флоу
Denis
22.09.2017
08:53:52
херня какая-то
Дмитрий
22.09.2017
08:54:28
Естественно, потому что в тс такого пока что даже теоретически быть не может
Denis
22.09.2017
08:56:17
при чем тут тс?
Дмитрий
22.09.2017
08:59:11
Ну у остальных такая запись вопросов не вызывает
Хотя выглядит забавно конечно
Ещё не оч понимаю зачем он всю рамду в код притащил
Google
Maxim
22.09.2017
09:02:51
вероятно что-то поменял
я так понял призмы есть в монокль тс
company
.compose(address)
.compose(street)
.compose(name)
.asOptional()
.compose(firstLetter)
.modify(s => s.toUpperCase())(employee)
kana
22.09.2017
09:58:03
скорее всего бот
Denis
22.09.2017
11:54:33
Шо за рыта?
Gleb
22.09.2017
14:24:16
Ладно кароче так то лодаш гавно да, все функции мутабельны с объектами связанные
Maxim
22.09.2017
17:15:29
const cloneArgs = R.map(clone)
const promapArgs = f => (...args) => f(cloneArgs(args))
lodash = R.map(promapArgs, lodash)
=)
andretshurotshka?❄️кде
22.09.2017
17:19:34
?
привет
neprivet.ru в био (
illiatshurotshka❄️
22.09.2017
18:47:29
лол
andretshurotshka?❄️кде
22.09.2017
18:59:58
в ноджс чате запостили походу
Combot
22.09.2017
19:35:36
combot.org/chat/-1001071213089
kana
22.09.2017
19:53:29
Люди считают, что требовать рейтинг это зашквар какой-то, поэтому удаляют свои сообщения