@frp_ru

Страница 35 из 420
Vasiliy
08.02.2017
00:29:26
(s[0], a) -> s[1], (s[1], a) -> s[2], ..., (s[n-1], a) -> s[n] a

ну т.е. есть частично применить a, то потом можно сделать композицию, но изначально разве это можно назвать композицией?

Владимир
08.02.2017
00:39:05
Ну ты правильно сказал, она уже от двух аргументов, один из которых фиксированный, композицией я бы тут назвал лишь проваливание вычисленного значения дальше

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

Google
Vasiliy
08.02.2017
00:42:41
вот еще хотел спросить пользуется ли кто этим https://github.com/sebinsua/ramda-debug

Владимир
08.02.2017
00:46:53
https://docs.google.com/presentation/d/1WmIH538r0ubjW5zfKh43I1_Up4OnqQnNhICETyDnhSI/mobilepresent?pli=1&slide=id.g333e5ebdc_0137

Вот тут много примеров и названий, может быть найдешь что нибудь похожее

andretshurotshka?❄️кде
08.02.2017
05:29:06
да там не совсем они, я не нашел этому названия, но оно по-любому должно быть
https://github.com/sanctuary-js/sanctuary/blob/master/README.md#meld----------- наверно, хотя может и нет)

Vasiliy
08.02.2017
09:45:23
https://github.com/sanctuary-js/sanctuary/blob/master/README.md#meld----------- наверно, хотя может и нет)
да, немного не то https://goo.gl/YRPpng, но полезная ф-ция все равно

мой дебаг R.tap(console.log)
ну да, в большинстве случаев достаточно, я что-то вчера вообще забыл про тап) ну и та тулза не для браузера

o, для тех кто на маке и кто юзает альфред и rxjs появилась вот эта хрень https://github.com/SamVerschueren/alfred-rxjs

Filipp
08.02.2017
13:10:58
огонь

Vasiliy
09.02.2017
12:08:32
чеет не очевидно мне опять, если pipe убрать, то тут уже не будет {}: https://goo.gl/0xXiaw ладно, похоже я что-то вообще не то пытаюсь сделать, не уверен, что мне это нужно именно так делать в принципе, попробую мыслить иначе (%

Vasiliy
09.02.2017
14:01:15
а там должно быть не 2, а {} в последнем примере в смысле, если убрать аргумент вообще, странно, что такая ф-ция на выходе, я вроде все аргументы дал, мне это не очевидно

Google
andretshurotshka?❄️кде
09.02.2017
14:47:45
https://goo.gl/nZqTqZ

хотя я не оч понял что нужно сделать)

Vasiliy
09.02.2017
14:55:45
ооо, unary!

спасибо))

Vlado
09.02.2017
15:44:54
https://github.com/fp-dom

andretshurotshka?❄️кде
09.02.2017
16:54:34
https://github.com/fp-dom
Я уж думал монады какие-нибудь, дом же сайд эффект

Странно что коммитов год не было)

Yumi
09.02.2017
18:44:39
Допустимо ли в чистой функции использовать методы нативных обьектов вроде Array.from такого? Или стоит передавать в аргументы?

Или просто придерживаться отсутствия сайд эффектов и этого достаточно?

Yumi
09.02.2017
18:54:48
Читал в руководстве редакса вроде бы, что в редьюсерах нельзя использовать внешнее апи и аргумент там был в том, что это чистая функция. Хотя не точно помню, что именно в руководстве, это было.

Дмитрий
09.02.2017
18:55:42
Внешнее api — это api удалённого ресурса, который нужно читать асинхронно

Yumi
09.02.2017
18:55:57
Понятно.

Дмитрий
09.02.2017
18:56:16
Всё синхронное и вычислительно несложноее — можно

Dmitriy
09.02.2017
19:02:58
Или просто придерживаться отсутствия сайд эффектов и этого достаточно?
Смотря чего ты хочешь достичь. Функция, зависящая от состояния по определению чистой не является.

Yumi
09.02.2017
19:03:39
Понимания)

Dmitriy
09.02.2017
19:09:40
На практике в языках с поддержкой манкипатчинга сложно делать функции православно чистыми.

Например спред тут разворачивается в concat, который можно пропатчить https://babeljs.io/repl/#?babili=false&evaluate=true&lineWrap=false&presets=es2015%2Ces2015-loose%2Ces2016%2Ces2017%2Clatest%2Creact%2Cstage-0%2Cstage-1%2Cstage-2%2Cstage-3&targets=&browsers=&builtIns=false&code=const%20k%20%3D%20%5B1%2C2%2C3%5D%3B%0Aconst%20n%20%3D%20%5B...k%2C%204%5D%3B

Дмитрий
09.02.2017
19:39:05
На практике в языках с поддержкой манкипатчинга сложно делать функции православно чистыми.
За monkey patching в 2017 году нужно долго бить, а потом увольнять с волчьим билетом

Я просто предпочитаю считать, что у меня в языке его нет

Google
Dmitriy
09.02.2017
19:40:44
Можно так же считать, что твоя функция чистая )

Vladimir
09.02.2017
19:41:37
Можно так же считать, что твоя функция чистая )
в любом случае в жс так приходится считать

Дмитрий
09.02.2017
19:43:17
Не, никто не спорит, что при должной изобретательности можно поломать любой алгоритм

Vladimir
09.02.2017
19:44:02
даже в казалось бы хаскеле есть unsafeCoerce =(

Nikita
09.02.2017
20:52:29
ссылки по теме

http://tomasp.net/coeffects/

https://github.com/Day8/re-frame/wiki/Effectful-Event-Handlers

там есть про coeffects

Дмитрий
09.02.2017
21:39:35
Все так делают, полифилы же
Полифиллы по определению не должны добавлять неожиданных сайд-эффектов в таком масштабе, что аж для редакса создавать проблемы)

Vasiliy
09.02.2017
21:57:22
странная фигня сегодня со мной произошла про тестирование с redux-observable, есть вот такой простой пример export const search$ = (action$: ActionsObservable<Action<string>>) => action$.ofType(PLAY_SEARCH) .map((action: Action<string>) => action.payload) .filter(q => q.length > 3) .debounceTime(1000) .distinctUntilChanged() .switchMap((q: string) => ajax .getJSON(`https://api.github.com/repos/vyorkin/${q}/stargazers`) .map(data => search({ data })) .catch((error: Error) => of(search(error))) ).takeUntil(action$.ofType(PLAY_SEARCH_CLEAR)); сорри, сейчас в гист заверну лучше)

Vasiliy
09.02.2017
21:59:42
проблема с тестом

я еще не успел дописать) сек

https://gist.github.com/vyorkin/d41218a2ea803db53bba2a7ae8d4cb64

ну, проблема в том, что тест не проходит

а вот другой на другой эпик проходит

ну на банальном пинг-понг примере

import * as test from 'tape'; import 'rxjs/add/operator/mapTo'; import configureMockStore from 'redux-mock-store'; import { createEpicMiddleware } from 'redux-observable'; import { ping, pong } from 'modules/pong/actions'; import { pong$ } from 'modules/pong/epics'; const epicMiddleware = createEpicMiddleware(pong$); const mockStore = configureMockStore([epicMiddleware]); test('maps ping actions to pong actions', t => { const store = mockStore(); store.dispatch(ping()); t.same( store.getActions(), [ping(), pong()], ); epicMiddleware.replaceEpic(pong$); t.end(); }); вот этот ок (я там добавил вывод с дифом выше) я думал, что дело в debounceTime, но дело видимо в ajax

лан, это глупо, я щас найду)

Google
Vasiliy
09.02.2017
22:22:19
нашел, дело и в debounceTime и в ajax (%

вот еще что-то нарыл https://github.com/cmelion/redux-observable-test-helpers про тестирование c redux-observable и вот этот пост https://medium.com/kevin-salters-blog/writing-epic-unit-tests-bd85f05685b#.gc4gt98o6

единственное я пока не понял как быть с debounceTime

не, эт пц, там все изменилось сильно, я не понимаю где advanceTo и прочие, какая ему альтернатива в гиттере тихо чет пока

andretshurotshka?❄️кде
10.02.2017
10:27:21
/stat

Combot
10.02.2017
10:27:21
combot.org/chat/-1001071213089

andretshurotshka?❄️кде
13.02.2017
12:39:35
?

Vasiliy
14.02.2017
16:23:14
чеет опять застрял)

const select = pipe(path, toArray); <- так не работает const select = arg => pipe(path(arg), toArray) где: toArray это: const toArray = ifElse(isArrayLike, identity, of); что мне тоже не нравится, я знал способ лучше, но забыл) ща, репл)

https://goo.gl/fz7qDi чет я никогда этого вот не понимаю( в общем вопрос сводится к: как записать вот такое point-free?: const select = p => pipe(path(p), toArray)

? animufag ?
14.02.2017
16:33:10
compose

andretshurotshka?❄️кде
14.02.2017
16:33:35
https://goo.gl/9tfgpN

Note: The result of pipe is not automatically curried. из доки

Vasiliy
14.02.2017
16:34:00
omg( спасибо! ничего, привыкну, еще пару раз наступлю и запомню)

andretshurotshka?❄️кде
14.02.2017
16:40:20
?

? animufag ?
14.02.2017
16:46:33
на самом деле забавно: прикинул что у compose более ественный порядок применения, использовал его и сработало compose(path, toArray)(p)(b) // => [1, 2, 3] но там семантика другая: p приводится к массиву, path полуприменяется

Vasiliy
14.02.2017
16:47:09
хм

https://goo.gl/A1iU3k

вот покороче https://goo.gl/9JtVts

Google
andretshurotshka?❄️кде
14.02.2017
17:04:46
compose от pipe только порядком аргументов отличается

Note: The result of compose is not automatically curried.

а зачем p приводить к массиву ¯\_(ツ)_/¯

Vladimir
14.02.2017
17:39:13
andretshurotshka?❄️кде
14.02.2017
17:42:54
путь для path

Vasiliy
14.02.2017
17:42:56
массив)

andretshurotshka?❄️кде
14.02.2017
17:51:37
ну в итоге как-то так https://goo.gl/23SdwO

Vasiliy
14.02.2017
17:51:53
да, я уже юзаю так)

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