@frp_ru

Страница 8 из 420
Ҫѐҏӗѫӑ
15.08.2016
21:24:03
но я за комбинирование фп и императивщины в жс

фп головного мозга опасно

Владимир
15.08.2016
21:24:27
И получается что 3 строки на 6 заменяются, это в простых случаях, а толку нет, ошибку в правильном коде все равно нужно постараться сделать, а если все минимальными функциями то еще тяжелее

Дмитрий
15.08.2016
21:24:51
ваще есть еще ramda-fantasy
Ух ты, спасибо! Давно думал найти что-то похожее

Google
Владимир
15.08.2016
21:25:30
Так что рамда ок в случаях когда код с функторами и монадами

Alex
15.08.2016
21:25:36
с ramda код надежнее, выходит, сложно написать шляпу - он либо делает что нужно, либо не делает

Владимир
15.08.2016
21:25:40
Alex
15.08.2016
21:25:44
либо работает, либо вообще не работает сразу видно

а импративно - вроде работает, а потом баги

с функциональным баги на другом уровне как правило

Владимир
15.08.2016
21:26:18
Рамда учит писать код переиспользуемым, как научились ее можно исключать

Alex
15.08.2016
21:26:31
на уровне более высокой логики уже

чем i++ заблы где-то

Ҫѐҏӗѫӑ
15.08.2016
21:26:51
тесты писать все равно надо

Владимир
15.08.2016
21:27:01
Ух ты, спасибо! Давно думал найти что-то похожее
Так оно давно уже есть, на фэнтази многие либы ссылаются

Ҫѐҏӗѫӑ
15.08.2016
21:27:04
и ts с noImplicitReturn)

Alex
15.08.2016
21:27:17
да, но меньше, функциональные тесты пишутся проще в прицнипе

Google
Ҫѐҏӗѫӑ
15.08.2016
21:27:29
тесты одинаковые будут

Alex
15.08.2016
21:27:38
т.е. ты тестируешь функцию - выход - выход

Дмитрий
15.08.2016
21:27:41
Так оно давно уже есть, на фэнтази многие либы ссылаются
Ну так вот ссылаются, там и в ramda ссылки есть, а хочется +- полной реализации

Владимир
15.08.2016
21:27:43
Ну да, тесты не особо и отличаются

Конечно если функцию на 100 строк не тестировать

Дмитрий
15.08.2016
21:28:08
Функцию на 100 строк надо переписывать))

Alex
15.08.2016
21:28:57
потребность в тестирование по факту все равно снижается

Владимир
15.08.2016
21:28:59
Не все это понимают, мой текущий проект из таких функций на 99 процентов состоит

Alex
15.08.2016
21:29:14
писать то можно, просто уже пустая работа будет, возможно

Владимир
15.08.2016
21:29:30
потребность в тестирование по факту все равно снижается
Ну ты же не будешь тестировать ради тестов, поэтому конечно снижается

А в плане группы плохо что ее переименовали, Серега все правильно говорил, теперь хер поймешь что тут обсуждать

Alex
15.08.2016
21:32:06
я тогда напишу в сообщении прикреплю)

Функционально-реактивные подходы в JS/TS. RxJS, Cycle.js, Ramda, etc.

Владимир
15.08.2016
21:34:51
Ага, убрать вообще буквы фрп и рп

Alex
15.08.2016
21:35:33
почему?

Filipp
15.08.2016
21:35:40
Ага, неплохо! R.both только не выглядит интуитивным тут вообще)
ну это тот же паттерн condition && action(), только в профиль

Владимир
15.08.2016
21:35:57
Потому что 2 человека понимают разницу, для других это одно и то же

Alex
15.08.2016
21:36:09
что одно и то же?

я уже объяснял что такое реактивный с моей точки зрения и функциональный, это вполне адекватные термины.

Владимир
15.08.2016
21:37:53
Я больше отношусь к тем для кого это одно и тоже, если мне нужны будут отличия я в гиттер пойду, там Денис поправит ?

Google
Alex
15.08.2016
21:38:16
они связаны, но несут разную смысловую нагрузку

делать реактивные приложения не основываясь на функциональном подходе не просто

однако вещи как бы независимые

Алексей
16.08.2016
21:41:31
Так.. я слышал вы RxJS обзываете - rp а не frp...

Ҫѐҏӗѫӑ
16.08.2016
21:42:00
все так

более того, в js нет вообще frp либ в опенсорсе

Алексей
16.08.2016
21:42:26
так.. почему не functional что меня останавливаеть на RxJS писать в функциональном стиле?

Filipp
16.08.2016
21:42:28
они и сами себя просят frp не обзывать)

Ҫѐҏӗѫӑ
16.08.2016
21:42:33
по крайней мере юзабельных

Filipp
16.08.2016
21:43:13
http://reactivex.io/intro.html

Алексей
16.08.2016
21:43:18
то, что это невозможно — не аргумент?
ок спасибо просветил :) теперь я все понимаю

http://reactivex.io/intro.html
Вот спасибо - пошел образовываться..

кстати пока я тут - вопрос по Cycle.js - в нем можно View layer дефолтный убрать и заменить на React ?

Ҫѐҏӗѫӑ
16.08.2016
21:54:50
если драйвер написать

готового вроде нет и он не особо полезен

тоже обсуждали выше

Алексей
16.08.2016
22:04:12
Мне в Cyrcle.js нравиться все - до того момента пока не доходит до View layer..

Alex
16.08.2016
22:10:55
что там?

не нравится

Google
Alex
16.08.2016
22:11:06
конкретно

https://github.com/cyclejs/cyclejs/wiki

Functional and Reactive Functional means “clean”, and Reactive means “predictable”. Cycle.js apps are made of pure functions, which means you know they simply take inputs and generate outputs, without performing any side effects. The building blocks are Observables from RxJS, a Reactive programming library which simplifies code related to events, asynchrony, and errors. Structuring the application with RxJS also separates concerns, because all dynamic updates to a piece of data are co-located and impossible to change from outside. As a result, apps in Cycle are entirely this-less and have nothing comparable to imperative calls such as setState() or foo.update() - this makes them truly "reactive" which means much more predictable and reliable.

Алексей
16.08.2016
22:16:41
не нравится
DOM: sources.DOM.select('input').events('click') .map(ev => ev.target.checked) .startWith(false) .map(toggled => div([ input({attrs: {type: 'checkbox'}}), 'Toggle me', p(toggled ? 'ON' : 'off') ]) ) вот это.. срочно нужен JSX для cycle.js

Alex
16.08.2016
22:32:17
он есть JSX

http://cycle.js.org/getting-started.html

только JSX на самом деле фигня, просто JS на мой взгляд значительно удобней как раза для функционального подхода, фактически для композиций

но если очень хочется можно и JSX

Alex
17.08.2016
12:35:54
кто-нибудь ramda-fantasy использует?

Алексей
17.08.2016
12:37:47
как вариант ['cool'] .map(getSomething) .filter(Boolean) .filter(somethingIsAllowed) .forEach(doSomething)
COOL!!!! Правда более подходит такой вариант ( он более соответствует тому что делает императивный ) [getSomething(‘cool’)] .filter(Boolean) .filter(somethingIsAllowed) .forEach(doSomething) Но вот это интресно. С коллекциями работать в FP легче :/

Filipp
17.08.2016
12:38:16
это же то же самое

Алексей
17.08.2016
12:38:31
это же то же самое
блин да - ты прав.. сори

Забавно конечно - превращаем данные в коллекцию и код ну просто безумно красивый получаеться - без всяких библиотек

C Rambda пришлось @#$ мозги и решение хоть и короткое но не сильно читаемое получилось

Ҫѐҏӗѫӑ
17.08.2016
12:44:23
но это и не фп код

Алексей
17.08.2016
12:45:46
ок filter, map, не функции высшего порядка? не FP? ( хотя вот про forEach соглашусь - но его можно на тот-же map заменить )

Ҫѐҏӗѫӑ
17.08.2016
12:46:14
filter, map и даже reduce из js — не фп. да

Google
Ҫѐҏӗѫӑ
17.08.2016
12:47:41
можно c с таким же успехом fp языком назвать

там тоже можно сделать функции высшего порядка

но вообще-то это недостаточное условие

Алексей
17.08.2016
12:48:18
Ҫѐҏӗѫӑ
17.08.2016
12:49:57
вообще для тру фп надо каррирование по умолчанию, data-last, желательно систему типов, отсутствие сайд-эффектов, отсутствие стейтментов

ну и иммутабельность и вот это все

Алексей
17.08.2016
12:51:04
не не не.. стоп стоп стоп.. в примере выше нет сайд эффектов и stabementov нет и immutability

а каррирование не обязательно использовать

Ilya
17.08.2016
12:51:23
Реализация, не?

Ҫѐҏӗѫӑ
17.08.2016
12:51:34
там есть контекст везде где попало как минимум

Ilya
17.08.2016
12:51:38
Работает как в фп, а под капотом не очень.

Алексей
17.08.2016
12:51:45
То что я не пользуют каррированием не делает код не функциональным

Ҫѐҏӗѫӑ
17.08.2016
12:51:48
оно и вне капота не очень

Ilya
17.08.2016
12:51:56
Ну вот тем паче.

Ҫѐҏӗѫӑ
17.08.2016
12:52:13
эти функции нельзя композировать

чейнинг - это уже не по фп

неправославно

Ilya
17.08.2016
12:52:46
Все, что в жз функциональное, на самом деле просто какие концепты из фп, написанные для жз. Разве нет?

Алексей
17.08.2016
12:53:04
['cool'] .map(getSomething) .filter(Boolean) .filter(somethingIsAllowed) .map(getSomethingNEW) функции getSomething, somethingIsAllowed, getSomethingNew - чистые без сайд эффектов ничего нигде не мутируеться это FP

Ҫѐҏӗѫӑ
17.08.2016
12:53:16
там от фп только ф-ии и hof

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