
Aleh
14.05.2017
21:42:43
в раст чатике про го
все логично ж

Дмитрий
14.05.2017
21:44:11
Бтв, нашёл хороший способ втащить наконец фп в свой код) https://github.com/gcanti/flow-static-land

Denis
14.05.2017
21:44:24
все баянишь)

Google

Denis
14.05.2017
21:44:44
у него лучше есть с typescript
https://github.com/gcanti/fp-ts
https://github.com/gcanti/io-ts

Дмитрий
14.05.2017
21:45:39
В тс там проблем не меньше)

Denis
14.05.2017
21:45:45
https://github.com/gcanti/monocle-ts

Дмитрий
14.05.2017
21:45:54
Я видел все его либы, у него тупо flow fatigue

Denis
14.05.2017
21:45:54
я флоу не люблю

Дмитрий
14.05.2017
21:46:12
Я тоже не люблю
И тс тоже

Denis
14.05.2017
21:46:15
очередная фигня от фейсбука
и от их ризона ничего нет
хорошего

Aleh
14.05.2017
21:46:26

Denis
14.05.2017
21:46:42
ведь как окамль был убог так они ничего и не сделали хорошего в ризон

Google

Дмитрий
14.05.2017
21:47:05

Denis
14.05.2017
21:47:25
потому что у них в фб любовь к окамлю
флоу же тоже на нем написан

Дмитрий
14.05.2017
21:47:34
Это не ответ)

Denis
14.05.2017
21:48:16
мой ответ - лучше пурса

Дмитрий
14.05.2017
21:48:30
Ясен фиг лучше
Но поддерживать весь код в одиночку желания нет

Denis
14.05.2017
21:48:46
и purescript-pux
ща там разметка через do нотацию красивенько выглядит)

Дмитрий
14.05.2017
21:49:48
Кстати, в принципе можно писать сразу на idris)
Но опять же, пункт 1 — весь код понимает только автор

Denis
14.05.2017
21:51:51
у идриса выхлоп жирный
ну и это энергичный язык
постоянно пруфить надо)
Hole Oriented Programming

Дмитрий
14.05.2017
21:53:18
Но у него тоже фатальный недостаток))

Denis
14.05.2017
21:53:27
та еще хуйня
не у всех же статичный результат

Дмитрий
14.05.2017
21:54:48
Не важно, он должен сворачивать до инварианта

Google

Denis
14.05.2017
21:54:53
кто-то проходил на степике хаскелль вторую часть?

Дмитрий
14.05.2017
21:59:19
Сомневаюсь))

Denis
14.05.2017
21:59:42
я просто прошел и 1 и 2 часть
дало многое)
я просто путался в лукавицах этих трансформеров монад
тут вообще практикующие хаскелль есть?)

andretshurotshka?❄️кде
15.05.2017
03:19:55
¯\_(ツ)_/¯

Pig
15.05.2017
04:48:21
Да у тебя же целый чат практикующих.

andretshurotshka?❄️кде
15.05.2017
04:49:23
Не, тут рамду в жс обсуждают

Pig
15.05.2017
04:49:48
Я другой чат имел ввиду.

andretshurotshka?❄️кде
15.05.2017
04:50:48
@haskellru ?

Pig
15.05.2017
04:51:37
https://gitter.im/ruHaskell

Pig
15.05.2017
04:52:36
Бывает столько монад навернут что вслух читать стыдно, мама думает что я ругаюсь.

Aleh
15.05.2017
07:04:56
В проде не юзаю(

Kirill
15.05.2017
12:16:49
Привет, пацаны. Как вам вот такая альтернатива для ifElse/switch?
https://jsfiddle.net/Voronar/qeohwnye/2/
Или что-то подобное есть в рамбде?

Google

Aleh
15.05.2017
12:17:23
if else switch заменяются полиморфизмом

Kirill
15.05.2017
12:20:05

Denis
15.05.2017
12:29:19
моя говнореализация
var cond_ = function(conditions) {
return (...args) => {
for(let condition of conditions) {
if(condition[0](...args)) {
return condition[1](...args);
}
}
};
};
ну или
const cond__ = conditions => (...args) => {
return ap(conditions => index => compose(flip(apply)(args), path([index, 1]))(conditions))(
findIndex(compose(flip(apply)(args), head))
)(conditions)
};

Aleh
15.05.2017
12:32:46
Можно пример на js?
грубо говоря
function f(a) {
if(a.smth) console.log("1")
else console.log("2")
}
вместо этого
function f(a) {
a.doSmth()
}

Denis
15.05.2017
12:33:19
cond вроде с clojure пришел в рамду
вот почему я нелюблю языки без вывода типов
const mapM = (of, f) => xs => {
const k = a => r => {
const fn = f(a);
return fn.chain(x => r.chain(xs => fn.constructor.of([x, ...xs])))
};
return xs.reduceRight((acc, next) => k(next)(acc), of([]));
}

Admin
ERROR: S client not available

Denis
15.05.2017
12:35:22
1 явно указать обертку of
2 явно указать внутреннюю обертку of
ну почти явно
fn.constructor.of

Kirill
15.05.2017
12:41:19
Как вам моё решение? Какие плюсы/минусы по сравнению с cond, да и в целом?

Denis
15.05.2017
12:41:39
cond более чем достаточно

Kirill
15.05.2017
14:53:22
Как избавляететсь от вот таких повторений?
const driverHasSpecialLicense = special_license =>
special_license !== undefined &&
special_license !== null &&
special_license !== '' &&
special_license !== 'something';
Мне вот такое только в голову пришло.
const notEqualsAnd = (...comp) => value =>
comp.reduce((prev, curr) => value !== prev && value !== curr);
И потом notEqualsAnd(und, null, etc.)('bla-bla')

Google

Vladimir
15.05.2017
15:00:14

Kirill
15.05.2017
15:14:41

Yumi
15.05.2017
17:55:34
Условные конструкции абсолютно нормальны для фп, зачем от них отказываться?

Vladimir
15.05.2017
18:45:48

Aleh
15.05.2017
18:47:08
в общем случае иф не очень гибкая конструкция, если ты хочешь добавить больше вариантов, то тебе придется редактировать if/switch

Denis
15.05.2017
19:55:17
if/then/else не нормальная конструкция
нормальная это PM,ViewPatterns,PatternGuards

Yumi
15.05.2017
19:58:08

code4aman
15.05.2017
20:18:16
too imperative?

Aleh
15.05.2017
20:18:36
открытость для изменений ж
а control structure они открыты для модификаций

Yumi
15.05.2017
20:31:39
too imperative?
Эм, ну в функциональных языках они тоже есть: https://en.wikibooks.org/wiki/Haskell/Control_structures

Denis
15.05.2017
20:31:59
там гарды

Kirill
16.05.2017
07:05:32
Привет. А что есть такого в рамде, ради чего можно перекатится с lodash fp?

Tim
16.05.2017
07:07:00
Поддержка спеки fantasy-land

Kirill
16.05.2017
07:07:54
Посмотрел реализацию cond в рамде и там используется несколько дополнительных утилит, а реализация на генераторе вообще ничего не требует стороннего кроме стандарта js.
Для повседневных задач.

Nikolay
16.05.2017
07:20:59
А для повседневных задач с чего лучше начать вводить ramda в проект?

Yung
16.05.2017
07:21:57

Nikolay
16.05.2017
07:22:26
действительно. Спасибо, попробую

Yumi
16.05.2017
07:29:31