
andretshurotshka?❄️кде
15.02.2017
08:18:24

Дмитрий
15.02.2017
08:35:10
На ум идёт только всякая дичь)

Vasiliy
15.02.2017
08:55:23

Дмитрий
15.02.2017
10:22:45

Google

Siarhei
15.02.2017
10:23:27

Vasiliy
15.02.2017
10:23:38
типа того? https://github.com/sindresorhus/arrify/blob/master/index.js#L7 (:
блин этот чувак жжет

Дмитрий
15.02.2017
10:23:56
Да, оно как раз)
На рамде короче всего записывается как unless(isArrayLike, of)

Vasiliy
15.02.2017
10:26:50
спасибо, реально мелочь, а приятно

Artur
15.02.2017
10:27:20
можно еще [].concat(arr || [])))
ну с фолси только надо поаккуратнее, зависит от задачи)

Alex
15.02.2017
10:30:10
а есть какой-нибудь курс по рамде типа как с rxjs на egghead?

Дмитрий
15.02.2017
10:31:39
Вот этот цикл статей хороший http://randycoulman.com/blog/categories/thinking-in-ramda/

Alex
15.02.2017
10:32:58
спасибо
@iamstarkov Вова, а можешь скинуть статью про линзы?
не помню где она была, помню что фон там белый и на русском

Владимир
15.02.2017
11:04:33
https://vimeo.com/104807358

Google

Владимир
15.02.2017
11:04:40
вот отличное видео

Vladimir
15.02.2017
11:09:58
@safinalexey
http://blog.csssr.ru/2016/07/08/lenses/
и вот этот тред https://twitter.com/iamstarkov/status/753353847578370048

Vasiliy
15.02.2017
14:17:57
а вы часто используете вообще R.__ или все flip'аете и частично применяете?
я стараюсь флипать где можно, если аргумент в центре и до него сложно добраться, то __

Vladimir
15.02.2017
14:21:45
я использую R.__ часто
удобно

Alex
15.02.2017
14:34:14
danke

Vladimir
15.02.2017
19:19:07
danke
а что ты хочешь линзами?

Дмитрий
16.02.2017
04:24:53
Нашёл для arrify решение ещё изящнее
const flatArgs = unapply(unnest)
Вставленный в pipe, он позволяет передавать в функцию любой набор аргументов и их массивов
const flatArgs = unapply( unnest )
const uni = pipe( flatArgs, append( 6 ) )
uni( 'abcd', [ 1, 2, [ 3 ] ], [ 4 ], 5, 'efg' )
// => ["abcd", 1, 2, [3], 4, 5, "efg", 6]

Vasiliy
16.02.2017
10:12:57
да, unapply(unnest) это неплохо, позаимствовал)

andretshurotshka?❄️кде
17.02.2017
20:39:34
const flatArgs = unapply( unnest )
const uni = pipe( flatArgs, append( 6 ) )
uni( 'abcd', [ 1, 2, [ 3 ] ], [ 4 ], 5, 'efg' )
// => ["abcd", 1, 2, [3], 4, 5, "efg", 6]
?

Vasiliy
18.02.2017
02:07:56
чет я опять приуныл :(
const toggle1 = useWith(flip(over(__, not, __)), [identity, lensProp])
const toggle2 = useWith(flip(flip(over)(not)), [identity, lensProp])
дичь ^
const toggle3 = (state, name) => evolve({ [name]: not })(state)
не pointfree ^
https://goo.gl/C4AG99

Дмитрий
18.02.2017
02:12:00

Vasiliy
18.02.2017
02:12:49
toggle a set?

Дмитрий
18.02.2017
02:13:43
Toggle — инвертирует существующее значение, а эта функция просто задаёт всем новое

Vasiliy
18.02.2017
02:14:09
а, да, название не подходящее

Дмитрий
18.02.2017
02:14:31
Мне просто уточнить, потому что set чуть-чуть проще делается

Vasiliy
18.02.2017
02:14:56
да, просто всем значениям в объекте (1 параметр) устанавливает указанное во 2 параметре новое значение
^ как-то я криво выразил мысль)

Дмитрий
18.02.2017
02:30:45
toggleAll — это map(not) ?

Google

Дмитрий
18.02.2017
02:32:47
С другими проблема именно в неудобном синтаксисе для бинарных аргументов

Vasiliy
18.02.2017
08:09:27
и правда, чет я не увидел map(not) под утро, спасибо
а, мне нужнен был ведь не toggleAll, а setAll, переименовал, реально сбивает с толку, тогда вот так наверное useWith(flip(map), [identity, always])

andretshurotshka?❄️кде
20.02.2017
13:48:50
/stat

Combot
20.02.2017
13:48:56
combot.org/chat/-1001071213089

Oleg
20.02.2017
18:30:05
Всем привет )
Есть две сущности. Предположим это country и city. У них есть поля country.title и city.name. Обе сущности обернуты в Maybe. Мне нужно получить один из трёх возможных вариантов строки:
${country.title}, ${city.name}
${country.title}
${city.name}
В зависимости от того определены ли country и city.
Собственно вопрос - как реализовать это максимально верным функциональным способом?
Я использую ramda и ramda-fantasy

Vladimir
20.02.2017
18:47:17

Oleg
20.02.2017
19:59:43

Vladimir
20.02.2017
20:01:18

Oleg
20.02.2017
20:03:47
const ct = pipe(apply(of), join(', '))
ct('hello', 'world') //error
ct(['hello', 'world']) //"hello"
of ведь создает массив из одного элемента

Vladimir
20.02.2017
20:16:49

Oleg
20.02.2017
20:21:53
В общем то написать функцию которая возвращает join её параметров не очень сложно. Меня интересует конкретно, как, применить её к монадам Maybe

Vladimir
20.02.2017
20:22:10
я не силён в монадах
но мб .ap какойнибудь

Den
21.02.2017
08:49:57

from
21.02.2017
11:32:28
уффф, прошу прощения за мой недофункциональный код, возможно в скором времени для меня станут "интуитивно понятными" вот эти все unapply–flip–append, но пока что все ваши примеры я считаю нечитаемым кодом
кажется оно чуть понятнее
Уверен, его можно ещё упростить
(edit: исправил name на title в случае с country)

Google

andretshurotshka?❄️кде
21.02.2017
11:48:52
Чет совсем не то) кто видел repl с ramda-fantasy?

from
21.02.2017
11:52:41

Дмитрий
21.02.2017
13:36:41
Тест
Аллилуя)

Admin
ERROR: S client not available

Дмитрий
21.02.2017
13:40:25

Oleg
21.02.2017
13:41:02
В целом да. Естественно любая из них может быть Nothing

from
21.02.2017
13:58:32
так, всё-таки действительно всё ещё проще. Никакие Maybe не нужны и можно убрать лишний .map:
http://ramdajs.com/repl/#?const%20city%20%3D%20%7B%20name%3A%20%27Sydney%27%20%7D%3B%0Aconst%20country%20%3D%20%7B%20title%3A%20%27Australia%27%20%7D%3B%0A%0Aconst%20get%20%3D%20R.curry%28%28propName%2C%20obj%29%20%3D%3E%20obj%5BpropName%5D%29%3B%0Aconst%20cityName%20%3D%20get%28%27name%27%29%3B%0Aconst%20countryName%20%3D%20get%28%27title%27%29%3B%0A%0Aconst%20address%20%3D%20%5B%0A%20%20cityName%28city%20%7C%7C%20%7B%7D%29%2C%0A%20%20countryName%28country%20%7C%7C%20%7B%7D%29%2C%0A%5D%0A%20%20.filter%28x%20%3D%3E%20x%29%0A%20%20.join%28%27%2C%20%27%29%3B%0A%0Aaddress%3B%0A

andretshurotshka?❄️кде
21.02.2017
14:00:35
задача-то не просто джоинить

from
21.02.2017
14:01:23
А в чем? Написать дичь другого рода? :)
Задача — сделать надёжно и понятно. Нахрена нам функциональное программирование ещё? )

Vasiliy
21.02.2017
14:20:41
ребят, кто польузет recompose, можете объяснить когда и как и почему вы делаете выбор между withProps vs withHandlers?

Дмитрий
21.02.2017
14:21:41
Хэндлеры не пересоздаются

Vasiliy
21.02.2017
14:21:47
да, вот это самая вроде бы главная причина выбирать withHandlers, когда нужны ф-ции

Дмитрий
21.02.2017
14:22:32
А нужны другие?)

Vasiliy
21.02.2017
14:22:44
я что-то делаю не так, щас покажу сек
очень много писанины(

Дмитрий
21.02.2017
14:23:01
Любой onClick(id) в рендере будет ломать напрочь весь shallow update

Vasiliy
21.02.2017
14:23:18
да, это понятно, ну поэтому withHandlers для этого да
мне бы withState чтобы работал как setState с объектами
чтобы мердж делал

Google

Vasiliy
21.02.2017
14:24:05
...
withState('state', 'setState', {
username: '',
password: '',
persist: true,
showPassword: false,
}),
withHandlers({
handleUsernameChange: ({ state, setState }) => (event: React.FormEvent<HTMLInputElement>) =>
setState({ ...state, username: event.currentTarget.value }),
handlePasswordChange: ({ state, setState }) => (event: React.FormEvent<HTMLInputElement>) =>
setState({ ...state, password: event.currentTarget.value }),
togglePersist: ({ state, setState }) => () =>
setState({ ...state, persist: !state.persist }),
...
это ж ад, как вы делаете такие штуки?
мб свой hoc сделать просто

Дмитрий
21.02.2017
14:25:10
Ну у нас свой hoc
Но над ним опять рекомпоз, лол))

from
21.02.2017
14:25:25
в setState(...) ...state ни к чему писать же

Vasiliy
21.02.2017
14:25:35
это в реактовском setState

from
21.02.2017
14:25:45
а тут не реактовский? : /

Vasiliy
21.02.2017
14:25:47
неа
вот я щас сделаю свой hoc поверх setState, чтобы было не обязательно

from
21.02.2017
14:26:17
а как он компоненту стейт обновит? oO

Vasiliy
21.02.2017
14:26:43
это все props (% это даже не стейт в терминологии реакта

Дмитрий
21.02.2017
14:27:06
А вообще setState при рекомпозе не особо уже нужен

Vasiliy
21.02.2017
14:27:10
да

Дмитрий
21.02.2017
14:27:22
Вот тебе уже ужимание твоих строчек)

Vasiliy
21.02.2017
14:27:44
я просто ленивый писать эти хоки свои все, щас сделаю да, без этого никак