
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

Admin
ERROR: S client not available

Дмитрий
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

Дмитрий
22.09.2017
08:59:59
Ещё не оч понимаю зачем он всю рамду в код притащил

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
Люди считают, что требовать рейтинг это зашквар какой-то, поэтому удаляют свои сообщения