@frp_ru

Страница 180 из 420
Kelin
26.09.2017
18:41:51
только массивом?

Evgeny
26.09.2017
18:42:27
А зачем?

? animufag ?
26.09.2017
18:42:28
даже если бы можно было то от этого стоило бы отказаться

Denis
26.09.2017
18:42:37
а чем тебе плохо массив?

Google
Kelin
26.09.2017
18:42:43
так короче

а что плохого в строке?

Denis
26.09.2017
18:43:17
строки априори плохо)

Kelin
26.09.2017
18:43:23
ну, чем?

? animufag ?
26.09.2017
18:43:34
да пытаюсь сформулировать предложение

но строка уже плохо

Kelin
26.09.2017
18:43:56
сильное заявление

? animufag ?
26.09.2017
18:44:10
тем что нельзя делать композицию

Kelin
26.09.2017
18:44:29
почему?

? animufag ?
26.09.2017
18:44:32
тем что в строке у тебя может быть что угодно вместо оговоренных символов

? animufag ?
26.09.2017
18:45:47
тем что ты передаёшь не то что хотел но заботливый лодеш приводит это к строке и делает всякую магию вместо того чтобы эксплицитно принимать один параметр и делать строго одну вещь

Denis
26.09.2017
18:46:21
можно конечно такую дрочь делать, но зачем? var dotPath = R.useWith(R.path, [R.split('.')]); var propsDotPath = R.useWith(R.ap, [R.map(dotPath), R.of]); var obj = { a: { b: { c: 1 } }, x: 2 }; propsDotPath(['a.b.c', 'x'], obj); // => [ 1, 2 ]

Google
Kelin
26.09.2017
18:46:52
propsDotPath('a.b.c.x', obj) вообще подразумевалось

Дмитрий
26.09.2017
18:47:59
Хорошая задачка на понимание рамды

Точнее, можно сделать

Это делается в пару строк

Kelin
26.09.2017
18:48:41
в смысле на понимание рамды

там же ничего сложного

Дмитрий
26.09.2017
18:49:09
Ну вот сделай, заодно побольше освоишься с её методами))

Лично я не рекомендую такой подход, но настаивать на этом не буду

Kelin
26.09.2017
18:50:54
const lensDotPath = pipe(split('.'), lensProp) ?

Дмитрий
26.09.2017
18:51:18
Ну например

Плюс там есть группа методов path

Kelin
26.09.2017
18:51:55
я еще не углублялся во все

Дмитрий
26.09.2017
18:52:21
Поэтому и написал что хорошая задача на понимание

kana
26.09.2017
18:54:09


а, хм, нужно сразу на пурсе писать, чей-то я

Дмитрий
26.09.2017
18:55:05
Ога

Я так и не придумал/, как на жс эффективно работать с тайпклассами

kana
26.09.2017
18:56:03
ну эффективно хз, но можно так же, как в пурсе

Дмитрий
26.09.2017
18:56:26
Я имею ввиду типизировать)

Google
Дмитрий
26.09.2017
18:56:53
Так то понятно, что untyped значения можно сделать сколько угодно выразительными, но я на чистом жс писать больше не в состоянии

kana
26.09.2017
18:56:59
Интерфейсы? Далеко не так гибко, но все же

Kelin
26.09.2017
18:57:04
ля, а че вот за дичь вы мутите для чего это

Дмитрий
26.09.2017
18:57:07
Не, слабо подходит

Поэтому нужен интероп purs -> js (flow / ts)

kana
26.09.2017
18:57:55
Ну, я пишу линзы на жс, потому что я сейчас разбираюсь с их устройством на хаскеле (по сути реимплементирую их), а потом еще и на жс дублирую

Дмитрий
26.09.2017
18:58:02
И можно будет инкапсулировать всё сложное в пурсе, а использовать в типизированном жс, выставив из пурсы наружу те интерфейсы, которые можно нормально типизировать

? animufag ?
26.09.2017
18:58:42
Я так и не придумал/, как на жс эффективно работать с тайпклассами
всмысле? интероп с тем что из пурсы сгенерилось?

Дмитрий
26.09.2017
18:59:07
Да

? animufag ?
26.09.2017
18:59:31
типизированный жс = флоу?

Дмитрий
26.09.2017
18:59:32
Ошибка авторов в том, что они считают что никто не будет деградировать и юзать обычный жс после этого

Что в современности уже не так

Дмитрий
26.09.2017
19:00:01
типизированный жс = флоу?
Флоу, тс, если получится оба — то будет вообще идеально

То есть просто какой-то типизированный бойлерплейт, который позволит подключать хорошо типихированный код с пурсы обратно и использовать его, по мере возможностей

kana
26.09.2017
19:01:38


Дмитрий
26.09.2017
19:01:47
То есть, вот есть проблема: purescript типизирует тот код что находится внутри него, вот мы написали его и выставили наружу какой-то API Потом мы меняем API и ломаем приложение, потому что "стык" между языками оказывается нетипизированным

Ой, там с нимим проблема

Открой issues, они что-то там ломали вроде

Ну, я пишу линзы на жс, потому что я сейчас разбираюсь с их устройством на хаскеле (по сути реимплементирую их), а потом еще и на жс дублирую
В общем у меня была идея что можно сделать interface Chain<T> { chain(fn: T => Chain<S>): Chain<S> } Но тут резко появляется ряд проблем, и я понял, что не в состоянии их решить удобным образом

Denis
26.09.2017
19:11:49
кинь живой пример

Google
kana
26.09.2017
19:13:06
Проблема найдена, там вообще очень странный траверс какой-то

и с линзами в принципе не интегрируются

https://goo.gl/52oDB7

traverse(Identity.of) по идее сделает нужный траверс, но с линзами это все равно не сынтегрируется

Denis
26.09.2017
19:16:34
там линзы не на функторах

kana
26.09.2017
19:17:20
Прямо с доки рамды: Lens s a = Functor f => (a → f a) → s → f s

Denis
26.09.2017
19:17:47
Kelin
26.09.2017
19:17:49
а чем lensProp отличается от prop, если он каррированный?

Admin
ERROR: S client not available

Denis
26.09.2017
19:17:53
Прямо с доки рамды: Lens s a = Functor f => (a → f a) → s → f s
есть еще такой ад https://github.com/calmm-js/partial.lenses

Дмитрий
26.09.2017
19:18:23
а чем lensProp отличается от prop, если он каррированный?
lensProp делает линзу, а prop просто возвращает тебе поле из объекта

Kelin
26.09.2017
19:20:48
lensProp('test') и prop('test') разве не одно и то же?

kana
26.09.2017
19:21:09
нет

lensProps('test') возвращает линзу. Линза - это сразу и геттер, и сеттер. prop('test') отдает просто геттер

Dmitry
26.09.2017
19:21:45
даже получить проперти в функциональном стиле не так уж и просто

Kelin
26.09.2017
19:24:45
аааааа лол

я дцп

Denis
26.09.2017
19:29:05
@kana_sama https://calmm-js.github.io/partial.lenses/playground.html#DIOgtg9gJglgZgTwBQAIDaKDkBDALhMAZ0wBoVQBTAGwqLMwAcIYA7XUrAD0wF0AoMgCUQLCgHM8FASgDefPAUIAudHxkoW2MBRUAiABK6yTVrhXrOKgIxkEKgEwoAvs5JqNWnSl32jKE2zmKJYoAMy2KgAszq7umtp6APJ+AWaywSoArBEoAGwxTm78TnwAlEA

Kelin
26.09.2017
19:29:28
найс ссылки

Google
kana
26.09.2017
19:29:47
ну там в ссылке зашифрован код)

Kelin
26.09.2017
19:30:07
да

Котяй Негодяй
26.09.2017
19:43:10
Дратути.

В этом коде rxjs хендлер апдейтов телеграм бот апи. У тайпинга Update мы видим очевидный недостаток — то, что это не юнион, а монолитный объект. С другой стороны, это, вроде как, и нафиг не нужно, так как потоки раскиданы по типам. Тем не менее я задумываюсь о том, чтобы подмешивать в родительский поток свойство type чисто ради хорошего вывода типов. Стоит ли это делать? https://gist.github.com/bigslycat/ea990b96bfb310f518e34e8bc92c40a3

Denis
26.09.2017
19:49:51
https://github.com/ramda/ramda-lens

Dmitry
26.09.2017
19:59:25
https://www.npmjs.com/package/partial.lenses

Котяй Негодяй
26.09.2017
20:02:30
А.

=)

Дмитрий
26.09.2017
20:02:37
С type

выводить тип

У тебя там кстати чистый disjoint union

Поэтому можно даже просто сделать юнионов type Update = { type: 'message', data: Message } | { type: 'chosen_inline_result', data: ChosenInlineResult, }

То есть в этом случае после чекинга type тип data будет выведен автоматически

Котяй Негодяй
26.09.2017
20:06:00
Оно итак будет.

Если с тайп.

Просто поля назову не data, а оставлю старые названия.

illiatshurotshka❄️
26.09.2017
20:07:15
а че если запилить апи как у линз для редактирования изображений

Дмитрий
26.09.2017
20:08:01
В плане

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