
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
тем что в строке у тебя может быть что угодно вместо оговоренных символов

Kelin
26.09.2017
18:45:05

? 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, они что-то там ломали вроде

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

Дмитрий
26.09.2017
19:18:23

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:01:46

Котяй Негодяй
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
В плане