
? animufag ?
04.08.2017
13:29:20
Дальше сложнее

kana
04.08.2017
13:46:50
Дальше вот:
const f = curry((a, b, c, d) => [a, b, c, d]);
o(o, o)(flip)(f)(1)(2)(4)(3);

Denis
04.08.2017
13:50:32
const flipper = o(flip)
const f = curry((a, b, c, d) => [a, b, c, d])
flipper(f)(1)(2)(4)(3)

Google

Vadim
04.08.2017
13:53:56
Спасибо всем! Интересно!
Но что если мне нужно флипнуть например третий и четвертый аргумент? Я ищу универсальное решение

kana
04.08.2017
14:20:59
вот это флипает 3 и 4 аргумент
Дальше вот:
const f = curry((a, b, c, d) => [a, b, c, d]);
o(o, o)(flip)(f)(1)(2)(4)(3);
Но что если мне нужно флипнуть например третий и четвертый аргумент? Я ищу универсальное решение
o(o)(o) пропускает первые два аргумента и флипает 3 и 4
o(o, o(o, o)) пропускает 3 аргумента, o(o(o, o), o(o, o)) 4

Vadim
04.08.2017
14:22:12
Ух! ) Спасибо!
Конечно не очень читаемо, но ладно )

Denis
04.08.2017
14:30:33

kana
04.08.2017
14:31:38

Google

kana
04.08.2017
14:31:40
как-то ты странно проверил) твой код меняет 2 и 3

Denis
04.08.2017
14:32:31
Там тоже 2 и 3 местами перепрыгнули

kana
04.08.2017
14:33:09
Конечно можно предположить, что ты отвечал на первую задачу, но
а) на нее уже был дан точно такой же ответ
б) в его условии было 3 аргумента

Vadim
04.08.2017
14:33:41
Если вкратце, то я думаю над самой короткой возможной реализацией этого:
// flipArgs(firstIdx, secondIdx, fn)
const fn = curry((a, b, c, d) => a + b + c + d);
flipArgs(2, 3, fn)('a', 'b', 'c', 'd') //-> ‘abdc’

kana
04.08.2017
14:34:40
ну можно просто принять аргументы в массив
поменять местами, вызвать с массивом

Denis
04.08.2017
14:35:06
Если вкратце, то я думаю над самой короткой возможной реализацией этого:
// flipArgs(firstIdx, secondIdx, fn)
const fn = curry((a, b, c, d) => a + b + c + d);
flipArgs(2, 3, fn)('a', 'b', 'c', 'd') //-> ‘abdc’
У лодаша такой им метод есть и было ишью в рамде что это ей и нафиг не надо

? animufag ?
04.08.2017
14:35:23
Наверное проще не пользоваться о и flip

kana
04.08.2017
14:36:02
+, проще и читаемее обернуть в лямду

Vadim
04.08.2017
14:36:37

kana
04.08.2017
14:36:47
в кложе было бы красиво - #(fn %1 %3 %2 %4)

Denis
04.08.2017
14:37:05
Варарги от лукавого

Vadim
04.08.2017
20:55:58
Не найдя короткого универсального способа для описанной сегодняшней задачки с реверсом указанного диапазона аргументов, пришел в итоге к этому )
const argsToArray = unapply(identity);
const takeArgs = curryN(2, compose(
apply(take),
splitAt(1),
argsToArray
));
const sliceByCount = converge(slice, [identity, add, nthArg(2)])
const reverseElems = converge(insertAll, [
identity,
compose(reverse, sliceByCount),
remove
]);
const reverseArgs = converge(compose, [
compose(apply, nthArg(2)),
compose(apply(reverseElems), takeArgs(2)),
always(argsToArray)
])
const fn = (a, b, c, d, e) => a + b + c + d + e;
const reversed = reverseArgs(1, 3, fn);
reversed('a', 'b', 'c', 'd', 'e') //-> “adcbe"

Denis
04.08.2017
21:03:44
откровенно какой-то ...

Vadim
04.08.2017
21:05:33
Короче в поинт-фри вряд ли сделаешь )

Denis
04.08.2017
21:05:56
c varargs вообще мало что сделаешь

Vadim
04.08.2017
21:06:30
Что такое вообще "варарги" про которые ты второй раз упоминаешь?
А, нашел ) "аргументы переменной длины" )

Denis
04.08.2017
21:09:52

Google

Vadim
04.08.2017
21:10:48
Что он сказал конкретно по теме обсуждения?

Denis
04.08.2017
21:11:35

Vadim
04.08.2017
21:14:43
Если все вышеприведенное реализовать с арностью 1, то получится намного более "многословно"

Denis
04.08.2017
21:15:06
ну вроде в птицах комбинатрных такое есть?

Vadim
04.08.2017
21:15:59
В принципе наверное. Ими можно играться.

andretshurotshka?❄️кде
06.08.2017
21:21:21
?
омг, тайлор делает какую-то дичь

Paruyr
07.08.2017
10:50:28
Народ, вопросец. Кто-нибудь в браузере гонял Haskell (GHCjs) + React? Ну или другой язык со схожим синтаксисом (Idris, PureScript, Elm)

? animufag ?
07.08.2017
10:52:46
У пурскрипта больше всего шансов

andretshurotshka?❄️кде
07.08.2017
11:11:22
pux?

Paruyr
07.08.2017
11:15:53
Забыл добавить. Надо JSX

Denis
07.08.2017
11:16:12
нафига он в хаскелл?

andretshurotshka?❄️кде
07.08.2017
11:19:09
hsx
лол

Denis
07.08.2017
11:19:25
что это еще за херня?

andretshurotshka?❄️кде
07.08.2017
11:19:55
Блин такое существует

Ilya
07.08.2017
11:20:08
Чтобы делать ХМЛ пока ты в хаскеле.
Всегда мечтал.

Denis
07.08.2017
11:20:37
ну на оксфордских скобках все можно сделать

andretshurotshka?❄️кде
07.08.2017
11:22:47

Google

Admin
ERROR: S client not available

Denis
07.08.2017
11:25:59

andretshurotshka?❄️кде
07.08.2017
11:26:28
А

? animufag ?
07.08.2017
11:26:49

andretshurotshka?❄️кде
07.08.2017
11:28:59
Да это гуглится хоть

Aleh
07.08.2017
11:29:15
))))

? animufag ?
07.08.2017
11:31:33
оксфордские какое-то мудренное название

Aleh
07.08.2017
11:33:12
)))))))))
https://habrahabr.ru/company/enterra/blog/224229/

Denis
07.08.2017
11:33:54
https://wiki.haskell.org/Quasiquotation

andretshurotshka?❄️кде
07.08.2017
11:37:04
лол

Дмитрий
07.08.2017
11:38:42

Алексей
07.08.2017
11:40:49
Ребят напомните - у нас скидывали репозиторий в котором перечислялись термини из FP которые было бы полезно понимать (не могу найти ссылку, может есть у кого)

Denis
07.08.2017
11:41:34
если ты про это, то тут не всему стоит верить https://github.com/hemanth/functional-programming-jargon

Алексей
07.08.2017
11:42:49
Да оно - tnx.

? animufag ?
07.08.2017
11:44:07
макросы как-то не очень зависят от фп/ооп. вообще они везде кроме лиспов неуместны, да и то не уверен, что практикующие на кложе пишут макросы

Алексей
07.08.2017
11:47:05

Nikita
07.08.2017
11:47:31

illiatshurotshka❄️
07.08.2017
11:47:33

Google

? animufag ?
07.08.2017
11:49:40
ну сериализация/десериализация ок. описание апи ок. возможно проп-тесты ок.
едсл, язык общения с бд и прочее умное/хитрое не ок

illiatshurotshka❄️
07.08.2017
11:50:41
почему?

? animufag ?
07.08.2017
11:51:01
еще как пишут
мб какие-нибудь примеры удобных штук из либ? а то извне сложно соориентироваться

Nikita
07.08.2017
11:51:25
в core куча полезных макросов
показать?

illiatshurotshka❄️
07.08.2017
11:51:32
https://github.com/pest-parser/pest/blob/master/README.md
мне нравится как там используют

? animufag ?
07.08.2017
11:52:09
почему?
сложная диагностика ошибок. когда у тебя построен язык на макросах обычно красиво смотреть примеры успеха. ошибки реже обрабатываются

illiatshurotshka❄️
07.08.2017
11:52:34
хз насчёт clojure