@frp_ru

Страница 126 из 420
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
Кстати из задачек для аутистов, написать compose на языке с дженериками
В ts compose описан криво ) Там ограниченное число звеньев

? animufag ?
01.08.2017
23:19:50
Через any какой-нибудь

Ааа ну да

Классика

В флоу вроде также

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

Дмитрий
01.08.2017
23:33:53
В флоу вроде также
Теоретически в flow можно записать иначе, но я не вижу смысла

Потому что тайпинги через непосредственное описание каждого варианта работают гораздо лучше и стабильнее

Это важнее абстрактной проблемы "нельзя передать больше 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
Ну и тот же вопрос для методов Все эти x.map(a) и map(x, a) сделаны вручную?
Пока не сделали сильный ИИ, весь код так или иначе написан вручную))

Дмитрий
02.08.2017
00:40:26
Он его вообще не пилил)) Хоть и активно участвовал в его обсуждении

Просто не повезло достаточно увлечённому человеку попасть в не особо удачное время

У него в коде каких только изощрённых приёмов нет, я просто поражаюсь его неутомимости и изобретательности И все эти приёмы объединяет одно — теперь они не нужны

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

Дмитрий
02.08.2017
00:43:43
Нет, я имею ввиду в них пропала потребность

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

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
А в чем вообще смысл упарывания по этому поинтфри? Я пока стараюсь писать поинтфри только лишь потому что практикуюсь в рамде. Но в чем практический смысл?
Насколько ты знаешь то типизированное фп изоморфно логике 1 порядка, а комбинаторы есть ещё один способ записывать логические высказывания через аксиоматический базис

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

И в итоге, у поинтфри-то какой плюс? (желательно по русски, а не по математически)

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

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