
andretshurotshka?❄️кде
25.07.2017
17:18:28
да это понятно-то

Vadim
25.07.2017
17:18:41
>> то есть вполне возможно что ты подходишь к решению задачи исходя из имеющихся знаний
Отчасти да. Но я согласен что линзы это полезная штука. Просто просмотрев (хоть и не очень подробно) документацию partial, мне не бросилось особо в глаза примеров, которые было бы особо труднее реализовать через рамда. Исключение - линзы с рекурсивностью. А все остальное как-то не впечатлило. Хотя может действильно я еще не вкурил )

? animufag ?
25.07.2017
17:19:22
https://github.com/robpike/filter

Denis
25.07.2017
17:19:25

Google

Vadim
25.07.2017
17:19:53
Да. Отчасти о нем тоже вспоминал глядя на кейсы partial

Denis
25.07.2017
17:20:12
ivy курильщика https://github.com/robpike/ivy

? animufag ?
25.07.2017
17:20:31

Denis
25.07.2017
17:21:08

Vadim
25.07.2017
17:21:45
А уж если начнешь в проекте прикручивать partial, то глядя на этот код коллеги точно решат тебя сжечь )

Denis
25.07.2017
17:22:06
та и от рамды могут сжечь с rx

Vadim
25.07.2017
17:22:39
Это половина того ужаса, который может вселить вид partial )

? animufag ?
25.07.2017
17:22:51
ну rx он такой. хуяк хуяк сабжектов и вроде реактивный код

Denis
25.07.2017
17:23:12

? animufag ?
25.07.2017
17:23:25
ещё поглобальней вынести ссылки и подписываешь в любом месте кода.

andretshurotshka?❄️кде
25.07.2017
17:23:55
)))
у меня subject в драйвере так что все законно
?

Google

Yumi
25.07.2017
21:12:06

Artur
25.07.2017
22:55:19
хорош, на интуицию полагаться эт как раз то что нам нужно)

andretshurotshka?❄️кде
25.07.2017
23:05:52
?

? animufag ?
25.07.2017
23:15:08
я конечно не вспомню что там было)

andretshurotshka?❄️кде
25.07.2017
23:25:28
подсветку TL влили в гитхаб ееее
https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/Resources/scheme.tl
const parse = (text) => pipe(reduce((acc, p) => {
return {
list: [...acc.list,
{ text: text.slice(acc.last, p.offset) },
{
_: p._,
text: text.slice(p.offset, p.offset + p.length),
}
],
last: p.offset + p.length
}
}, { list: [], offset: 0 }), prop('list'))
как тут выпилить стейт?

? animufag ?
26.07.2017
01:35:25
стейт = text?

andretshurotshka?❄️кде
26.07.2017
01:43:17
стейт last
ну и text можно

? animufag ?
26.07.2017
02:29:26
ну, тут сложноватая штука с этим подчёркиванием.
а так подгатавливаешь список, где нужно вырезать. типа [[0], prop(list).map([p.offset], [p.offset + p.length /* где-то тут можно зашить p._ */])].flatten.uniq
и как-то это нужно замапать на splitAt
или сделать второй смещёёный список (например с добавленным 0 в начале) и его zipWith((,)) и slice

andretshurotshka?❄️кде
26.07.2017
02:54:33
Чет как-то запутанно

Roman
26.07.2017
10:00:38
нубский вопрос, как рамдовские тайпинги для тс подружить с импортом через ramda/src/ ?
работает нормально только если писать
import { map } from ‘ramda’;
но так тришейкинг не работает

kana
26.07.2017
10:04:16
для тришейкинга есть https://www.npmjs.com/package/babel-plugin-ramda
нужно, чтобы сначала типы чекались, а потом бабель проходил (а в таком порядке обычно тс и бабель и комбинируют)

Google

Denis
26.07.2017
10:14:20
rx,most,... это все императивное решение которое имеет конечный результат что и у фрп

Roman
26.07.2017
10:18:27
у меня тс собирается своим лоадером, бабеля нету

kana
26.07.2017
10:19:45
Ну лично я бы использовал тайпскрипт чисто для тайпчекинга, оставляя код как есть
потому что бабель как решение для траншпилиинга мне нравится больше

Denis
26.07.2017
10:20:28
дно

Roman
26.07.2017
10:20:50
я бы тоже много чего сделал, но я не один над проектом работаю
и не я такие решения принимаю

Denis
26.07.2017
10:44:06
что это за залупа? https://github.com/tpoulsen/recursion_schemes/blob/master/lib/recursion_schemes.ex#L40

andretshurotshka?❄️кде
26.07.2017
12:33:27

Roman
26.07.2017
12:35:15
готовые же есть

andretshurotshka?❄️кде
26.07.2017
12:35:42
Они просто для ramda, я имею ввиду
declare module 'ramda/src/map' { ... }

Roman
26.07.2017
12:36:34
https://github.com/types/npm-ramda
только они рассчитаны на то, что ты монолитный инстанс юзаешь
а
понял

andretshurotshka?❄️кде
26.07.2017
12:38:42
как у димы в флоу
https://github.com/zerobias/telegram-mtproto/blob/feature/mtproto3/flow-typed/ramda_vx.x.x.js#L1120

Google

Roman
26.07.2017
12:39:42

andretshurotshka?❄️кде
26.07.2017
12:40:16
это фото организации
вообще мейнтейнер этих типов рамды немного упоротый

Roman
26.07.2017
13:27:16
или копипастить все?

andretshurotshka?❄️кде
26.07.2017
13:27:57
?
import { func } from 'ramda'
export default func

Roman
26.07.2017
13:30:37
шторм не подтянул тайпинги
declare module 'ramda/src/map' {
import { map } from 'ramda';
export default map;
}

andretshurotshka?❄️кде
26.07.2017
13:31:03
как?

Admin
ERROR: S client not available

andretshurotshka?❄️кде
26.07.2017
13:31:07
А тайпскрипт

Roman
26.07.2017
13:32:17
ну у меня цель комплишен в иде
елси без него, то можно и просто import { map } from 'ramda/src/map’

Дмитрий
26.07.2017
13:38:07
Никто ещё не предложил babel-plugin-ramda?

andretshurotshka?❄️кде
26.07.2017
13:39:48
у него бабела нет

Дмитрий
26.07.2017
13:41:57
Аа

Vadim
26.07.2017
16:16:58
Народ! Рамдовский метод composeK требует что б каждый из методов в цепочке возвращал контейнер того же типа, что и предыдущий:
composeK(s => Maybe.Just(s + 1), s => Maybe.Just(s + 1), s => Maybe.Just(s))(5) //=> Maybe.Just(7)
А можно ли писать проще? Что б не прописывать возвращене контейнера каждый раз, тем более что вернуть ты можешь в любом случае контейнер того же типа.
Иными словами, можно ли в рамде встроенными создать цепочку вызовов без создания какой либо утилитной функции своими руками?
В смысле что б писать не так:
const ofMaybe = fn => a => Maybe.Just(fn(a));
composeK(ofMaybe(inc), ofMaybe(inc), ofMaybe(identity))(5) //=> Maybe.Just(7)
а как-то так:
method(inc, inc, s => Maybe.Just(s))(5) //=> Maybe.Just(7)
?

Denis
26.07.2017
16:17:55
ты можешь в коробку, запихнуть коробку-коробки?

Google

Vadim
26.07.2017
16:18:43
Понял только про хуйню
О чем второе предложение?

Denis
26.07.2017
16:19:30
Int -> Int -> [Int] -> Int -> [Int] как ты себе такой трешак представляешь?
ты хочешь смешать 2 категории
a -> b
Monad m => a -> m b
стрелки Клейсли с функциональными стрелками

Vadim
26.07.2017
16:22:09
Хотя сорри! Мой кейс вполне заменяется методом map контейнера )
Maybe.Just(5).map(inc).map(inc) //=> Maybe.Just(7)

Denis
26.07.2017
16:22:27
ну вот)
или compose(map, map, filter)(Maybe.Just(5))
и если у тебя 2 рядом map то лучше map(o(f, g))
это фьюжен

Дмитрий
26.07.2017
16:40:24

Ilya
26.07.2017
18:38:52
Бля, на меня снова накатало.
Расскажите мне, пожалуйста, в человеческих, можно даже "поцанских", терминах, что такое монада касательно программирования?
Всё что я понял из мирриады статей это то что монада в скалке это любой тип с флатМапом но наверное есть чёт ещё?
Я открываю статьи, и там либо паста про эндофункторы, либо я вроде понимаю, но потом иду к холодильнику за колой и понимаю, что ничего не понимаю.
И так по кругу.

? animufag ?
26.07.2017
18:46:57

Ilya
26.07.2017
18:47:59
Проиграл с введения, спасибо.
Возможно в этот раз пойму, люблю смешные пояснения.
Т.е. монада это типо контейнера который соблюдает вот эти три правила на правый юнит, левый юнит и ассоциативность?

Denis
26.07.2017
18:59:49