@frp_ru

Страница 167 из 420
Vadim
21.09.2017
13:40:22
Но линзы просто для получения данных мне кажутся бессмысленными

Для этого я использую path

andretshurotshka?❄️кде
21.09.2017
13:41:44
https://twitter.com/GiulioCanti/status/910812294942199808
для вложенных интерфейсов тоже работает?

Denis
21.09.2017
13:42:58
хз

Google
Denis
21.09.2017
13:43:02
не проверял пока

Maxim
21.09.2017
15:14:41
https://twitter.com/GiulioCanti/status/910812294942199808
О, наконец увидел типизированные линзы. Спасибо, ухожу от assocPath )

Но линзы просто для получения данных мне кажутся бессмысленными
Удобно если вычислять линзу и работать с ней в другом месте

Vadim
21.09.2017
15:16:57
Удобно если вычислять линзу и работать с ней в другом месте
Именно для этого линзы и предназначены. И именно такого юзкейса в своей работе я никогда не видел )

Вычислить можно и path

рамдовский

Maxim
21.09.2017
15:18:15
А R.over ?

Редюсеры одной строкой вычислять

Дмитрий
21.09.2017
15:19:16
Но линзы просто для получения данных мне кажутся бессмысленными
Когда у тебя есть getter и setter, ты можешь взять структуру, обновить вложенный в неё объект и сохранить изменения

Vadim
21.09.2017
15:19:38
А R.over ?
Да, согласен. Для этого метода нужна линза. Просто потому что он требует именно линзу, а не просто путь.

Дмитрий
21.09.2017
15:20:07
Причём линзы можно совмещать, всё больше инкапсулируя механизмы обновления отдельных объектов

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
pipe(lenses.prop.get, ...)
Аргумент указывать придется

kana
22.09.2017
06:25:23
pipe(lenses.prop.get, ...)
Не вариант, я хочу линзу на выходе, чтобы и гет, и сет, а не геттер

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
кто такие призмы ?

Как минимум нужны ещё призмы и профункторы
Нашёл такую репу - https://github.com/RocketPuppy/redux-consumer-toolkit

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

Страница 167 из 420