
Vadim
01.08.2017
23:06:14
Я тоже так воспринял их.

? animufag ?
01.08.2017
23:06:27
Было бы хоть как-то удобно если бы они назывались apply11 apply21 по количеству аргументов
Можешь для себя по необходимости в скопе определить одну две таких функций
А так бесполезно

Google

Vadim
01.08.2017
23:07:07
Просто так часто упоминается термин, типа "комбинаторное программирование", что я подумал что это что-то больше чем различные дополнительные виды compose

? animufag ?
01.08.2017
23:07:19
Нет это не оно
Ну хотя я не знаю определений
Ну комбинатор очень общее слово

Дмитрий
01.08.2017
23:09:08
Потому что это лямбда в чистом виде
То есть, на них можно описать все ADT
Но практического смысла в жс конкретно в этом пакете всё равно нет

Vadim
01.08.2017
23:11:27
Ну как дополнительные вариации "o" если только )
С compose их сравнивать нельзя, так как ни один из них не принимает произвольное число аргументов

? animufag ?
01.08.2017
23:17:07
Ну производит он функции с конечным числом аргументов
Наверное можно привести контрпример
Кстати из задачек для аутистов, написать compose на языке с дженериками

Google

? animufag ?
01.08.2017
23:19:31
На хаскеле не интересно, тк готовы гайды для вараргов на тайпклассах

Vadim
01.08.2017
23:19:34

? animufag ?
01.08.2017
23:19:50
Через any какой-нибудь
Ааа ну да
Классика
В флоу вроде также

andretshurotshka?❄️кде
01.08.2017
23:29:25

? animufag ?
01.08.2017
23:31:54
Ну загугли как printf haskell

Дмитрий
01.08.2017
23:33:53
Потому что тайпинги через непосредственное описание каждого варианта работают гораздо лучше и стабильнее
Это важнее абстрактной проблемы "нельзя передать больше 30 аргументов"

? animufag ?
01.08.2017
23:37:44
Там есть варарги в дженериках?

Дмитрий
01.08.2017
23:38:31
Ага
Но это не решение проблемы само по себе, ещё надо придумать как их заюзать в данном случае

? animufag ?
01.08.2017
23:39:14
Ну думал в плюсах написать. И да были проблемы

Дмитрий
01.08.2017
23:39:49
Потому что ладно бы там просто был неограниченный ряд типов — это решаемо
А вот неограниченный ряд типов, в котором каждый следующий зависит от предыдущего — это жёсткий загон

? animufag ?
01.08.2017
23:40:00
Теперь будет попроще задача – без ебли с плюсами
Ну да нужна ещё специализация дженериков

Дмитрий
01.08.2017
23:40:40
Тоже есть

Google

? animufag ?
01.08.2017
23:40:47
Ну норм

Дмитрий
01.08.2017
23:42:35
Короче, для любых частных случаев его возможностей хватает, я просто сам себе рамду типизировал как мне удобнее)
А для общего случая нужен какой-либо хитрый манёвр, может быть попробовать рекурсивный тип задать, хз
Об этом опасно думать, можно потом подхватить синдром gcanti

? animufag ?
01.08.2017
23:44:10
Ааа
Понял
Не
Там нужно быть в меру упоротым чтобы на одной теме долго повиснуть

Дмитрий
01.08.2017
23:45:46
Ага))
Я читал его блог и прям грустно стало, реально прям перегорел чувак
Jul 25 Flow has Row Polymorphism
Sep 5 Flow doesn’t support higher kinded types:
Sep 27 Unfortunatelly, flow throws an error
Oct 20 Im stuck
...
Mar 17 Higher kinded types in TypeScript
Теперь воюет с конпелятором сидит

Vadim
01.08.2017
23:53:46
В принципе, покопался сейчас в комбинаторах fantasy-birds, и вижу что даже для моих утилитарных юз-кейсов там случаи применения находятся. Вот например:
const src = {
some: 22,
other: 33
};
//const fn = obj => key => key => propOr(key, key, obj);
const fn = finchstar(propOr);
warblerstar(fn, src, 'some') //-> 22
warblerstar(fn, src, 'qqq') //-> 'qqq'

Дмитрий
01.08.2017
23:54:54
А что там за финчстар?

Vadim
01.08.2017
23:55:12
finchstar :: (c -> b -> a -> d) -> a -> b -> c -> d
Просто реверсивно все 3 аргумента

Дмитрий
01.08.2017
23:56:13
Ааа

Vadim
01.08.2017
23:56:25
Короче, задача была в том, что б в propOr(key, key, obj) передать key только один раз
В ramda это через относительно сложный compose пришлось бы сделать

Дмитрий
01.08.2017
23:56:50
Ну да, знакомо

Google

Дмитрий
01.08.2017
23:56:52
Ну я по ряду причин тут предпочитаю абстракции не наворачивать)

Vadim
01.08.2017
23:57:27
Проблема в том, что значение всех этих штук в голове надо держать )

Дмитрий
01.08.2017
23:57:43
Ну вот да
Потом так откроешь проект через пол года и приплыли

Vadim
01.08.2017
23:58:56
Ну с другой стороны fantasy-birds это лишь 1/20 от размеров словаря ramda
С такой логикой и ramda нельзя пользоваться )
Только вот названия этих комбинаторов бесят. Совершенно ни о чем не говорящие

Дмитрий
02.08.2017
00:01:18
Ага) В этом и проблема)

Admin
ERROR: S client not available

Дмитрий
02.08.2017
00:01:34
Но тут как с эпиками — осмысленных названий тут всё равно нет

Vadim
02.08.2017
00:01:47
У рамды хотя бы всякие converge и useWith. Это хоть что-то

? animufag ?
02.08.2017
00:23:39
Кстати в джс реально сделать f(x, a) // a.x
?
Ну и тот же вопрос для методов
Все эти x.map(a) и map(x, a) сделаны вручную?

Дмитрий
02.08.2017
00:32:15

Сергей
02.08.2017
00:39:41
че он один пилил флоу?

Дмитрий
02.08.2017
00:40:26
Он его вообще не пилил)) Хоть и активно участвовал в его обсуждении
Просто не повезло достаточно увлечённому человеку попасть в не особо удачное время
У него в коде каких только изощрённых приёмов нет, я просто поражаюсь его неутомимости и изобретательности
И все эти приёмы объединяет одно — теперь они не нужны

Google

Дмитрий
02.08.2017
00:42:55
но ему уже всё равно

Сергей
02.08.2017
00:43:24
фб отклонил?
или что там произошло

Дмитрий
02.08.2017
00:43:43
Нет, я имею ввиду в них пропала потребность
Он фигачил фейковые классы — теперь для этой роли усилили интерфейсы, ему нужно было надёжное описание ограничений и зависимостей типов — теперь есть opaque types, ну и так далее

Сергей
02.08.2017
00:47:09
Неприятно как-то

Denis
02.08.2017
09:10:11
Комбинаторы были предшественниками ЛИ и были придуманы в 24 году, дали возможность писать в поинтфри да и почти всю алгебру я про монады моноиды и тд можно выразить для функций через комбинаторы, а уж как известно по Черчу можно закодировать любую структуру через функциональные стрелки вплоть до изоморфизма
https://github.com/philipnilsson/fantasyland-redux

? animufag ?
02.08.2017
10:17:33
В рамде нет мапа над (-> а)
?
Ну короче эта либа видимо определение инстансов для (а, (-> а))

Denis
02.08.2017
10:32:36
Какая либа?

Vadim
02.08.2017
11:13:51
В рамде нет мапа над (-> а)
?
Если хочешь в js чате донести свой вопрос до как можно большей аудитории, то надо задавать вопросы в js-понятном стиле ) Я например не понял что такое (-> а). Это функция, принимающая значение любого типа, но возвращающая строго определенный тип? Или что?
В определенный момент начальство или коллеги скажут "че это за херня?", "зачем так делать?". И я не найду ответа, ибо и для себя его не вижу )

Denis
02.08.2017
11:19:31

Vadim
02.08.2017
11:21:44
Такой довод до "простых людей мира js" не дойдет, так как: a) не будет понят; б) я сам из тех-самых "простых людей" )
И в итоге, у поинтфри-то какой плюс? (желательно по русски, а не по математически)

Denis
02.08.2017
11:28:52
Чем меньше абстрактных операций в математике тем меньше проблем. У комбинаторов только одна операция - применение. У ЛИ уже две, применение и лямбда абстракция