
? animufag ?
02.08.2017
14:54:35
всё равно как спросить зачем вообще писать типы если я сую инт туда где предполагаю получить инт

Denis
02.08.2017
14:55:32
Online

? animufag ?
02.08.2017
14:56:08
по крайней мере флоу должен был сказать что есть ошибка на третьей строке где id("")

Google

Дмитрий
02.08.2017
14:56:31

Denis
02.08.2017
14:57:09
Хватит жс защищать) пойми это даже не полумера как окамль

? animufag ?
02.08.2017
14:58:49
https://flow.org/try/#0PTBmFcDsGMBcEsD2kAE1EFsAOiDOBTAHgBUAaFAJXOIDUBDAG3H2oEEAnAc1wC4UBJWPnZ0ARgyLEUAXgB8lWbIAUoSHyUA6LcQ7cAlDPm1Gzclo10uvFDqt6+xpvhQBvAFAgUKdvljh2qKqaWpb6ANwewAC+brEQMAjIKPAAJiTKsA72Nq5uXj5+ASiwETFu8XBIqKlKmSiQ4Biiwtm4sOzwkJy5+b7+qABEDIgMA6Wx6JC4I-gaw5xKNQMDenoRk9MSc4gLNQCMqxGRG7AoAB58bR1dMmiYOARKGACeAGKQ5AAsAEzkAOSQRBYfB-NZuIA

andretshurotshka?❄️кде
02.08.2017
14:59:08

Denis
02.08.2017
14:59:52

andretshurotshka?❄️кде
02.08.2017
15:00:03
tryflow только типы и проверит)

? animufag ?
02.08.2017
15:00:12
ээх

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

? animufag ?
02.08.2017
15:00:36
мб кто-нибудь запустит у себя
лень настраивать окружение

andretshurotshka?❄️кде
02.08.2017
15:00:52
ща попробую

Google

Denis
02.08.2017
15:01:24

Дмитрий
02.08.2017
15:01:40
Я лично делал реализацию профункторов, которая выдерживает сорок тысяч последовательных (вложенных) вызовов
Причём не скажу, что там вообще было что-то сложное

Denis
02.08.2017
15:02:41
Всякими хаками оптимизировать, хотя это должен делать компилятор

Дмитрий
02.08.2017
15:02:46
Это не хак
Я про это и говорю, ты почему то рассматриваешь язык как дар свыше
Я — как инструмент для решения проблем
Fluture абсолютно так же stack safe
Реактовский файбер — тоже
У всех всё есть, у одного тебя почему то жс на это не способен

Denis
02.08.2017
15:04:32
И где твои профункторы?

Дмитрий
02.08.2017
15:05:23
Вовсю используются, разумеется
https://github.com/zerobias/telegram-mtproto/tree/feature/mtproto3/packages/telegram-mtproto/src/util/profunctor
Если что, то Arrow там — неподходящий термин для того объекта, но переписывать пока лень

andretshurotshka?❄️кде
02.08.2017
15:06:23
скомпилированный код

? animufag ?
02.08.2017
15:07:25
ммм косяк
обычно лень делать, но пожалуй напишу им ишью

andretshurotshka?❄️кде
02.08.2017
15:08:34
так в флоу и не было оверлоада
никогда

Google

Дмитрий
02.08.2017
15:08:44

andretshurotshka?❄️кде
02.08.2017
15:09:02
так тоже не работает
в тс бы сработало
declare function id<T>(t: T): T
declare function id(t: number): string
function id(t) {
if (typeof t === 'number') {
return "lol";
} else {
return t
}
}

Denis
02.08.2017
15:09:27
Трамполины, трансдьюсеры все от лукавого, тем более хикки сделал трансдьюсеры через хаки потеряв всю математику, а там должны быть ф алгебры

? animufag ?
02.08.2017
15:09:28
окей окей ребят
косяк вот здесь
"console.log(id(""));"

Denis
02.08.2017
15:09:51
Ну и стеки через массивы в которых зависимости хранятся

? animufag ?
02.08.2017
15:10:03
теперь это функций над числом а не T

Дмитрий
02.08.2017
15:10:40

Denis
02.08.2017
15:11:02
Ну трансдьюсеры точно битая абстракция

andretshurotshka?❄️кде
02.08.2017
15:11:09
кул
вот если убрать тип он выведет все)

Дмитрий
02.08.2017
15:11:14
Если ты не хочешь лезть в базис реализаций — так и говори, это нормально. Но это не значит, что этот код какой-то расово неверный или что-то ещё

Denis
02.08.2017
15:12:23
А вообще вроде катаморфизмы можно через профункторы записать и вроде даже инициарная и терминальная алгебра коалгебра получится

andretshurotshka?❄️кде
02.08.2017
15:12:27
вот если убрать тип он выведет все)
https://flow.org/try/#0GYVwdgxgLglg9mABDAJgCigSkQbwFCLLCIYCeADgKZzFSIC8jiA5GCALYBGlATs9vkKEelKCB5IARABs40yQG4CiAL6JK0gM6Vcy4aPFIoylXlN4ICTXMoA6WQHM0qNJMmZMSy2GvS7j53QARg8lIA

Дмитрий
02.08.2017
15:13:04
Это банальные алгоритмы, которые делают ровно то, что от них требуется и являются надёжной абстракцией в данном случае, их отрицание не более эффективно, чем отрицание гравитации

Denis
02.08.2017
15:13:30

Дмитрий
02.08.2017
15:13:34
Потому что этим кодом как и любым другим можно пользоваться в стиле поставил и забыл

Google

Denis
02.08.2017
15:14:55

andretshurotshka?❄️кде
02.08.2017
15:15:35
лол

Дмитрий
02.08.2017
15:22:55
Но знаешь много путей приводит к одному и тому же результату, вопрос насколько это категорно алгебраически расово верно
Нуу меня при описании например всегда надёжно сохраняется и выводится тип. Мой поинт в том, что если я сейчас заморочаюсь с бабелем, чтобы скрыть имплементацию в синтаксический сахар а ля пурс и скажу, что «это новый proscript, deal with it», то в сущности это ничем не будет отличаться от метода работы пурсы
Есть абстракция — гарантии, которые предоставляют авторы языка/инструментария юзерам, например по категорным качествам сущностей; и есть имплементация, которая занимается байтоёбством с массивами (как у меня там в prelude) и прочими низкоуровневыми вещами, чтобы юзеры об этом голову не забивали

Denis
02.08.2017
15:25:30
Но заменять CPS стеком из массива зависимостей, это как-то не так

Admin
ERROR: S client not available

kana
02.08.2017
18:00:36
Это нормально, если это работает полностью как ожидается
А оно работает полностью как ожидается

Denis
02.08.2017
18:00:50
?

kana
02.08.2017
18:01:07

Дмитрий
02.08.2017
18:01:52
Да
В сущности, на каком-то уровне реализации массив функций всё равно всплывёт
И если ты не занимаешься реализацией как я, то это не твоя головная боль)
На самом деле у меня есть даже более оптимизированная реализация infinite call stack, хочу уже эту идею как-то обобщить и вынести отдельно, чтобы потом уже на её базе развернуться вовсю
Функторы, maybe, either, future без sanctuary-type-classes и так далее


Vadim
02.08.2017
22:16:33
Пытаюсь сейчас играться с комбинаторами, переделывая код на поинтфри стиль, и заменяя комбинаторами где можно функции "с телом" и переменными. И поражаюсь насколько объемным становится код. Это неизбежно? Код на комбинаторах в любом случае будет более длинным и многословным чем при использовании ramda или функций с телом? Даже в "умелых руках"?
Вот это:
var renameKeys = (keysMap, obj) =>
reduce((acc, key) => assoc(keysMap[key] || key, obj[key], acc), {}, keys(obj))
Превращается в такой нечитаемый кошмар:
var renameKeys = converge(reduce(__, {}, __), [useWith(
compose(warblerstar, robinstar, useWith(assoc), append(identity), pair),
[o(warblerstar, robinstar, propOr), flip(prop)]), compose(keys, nthArg(1))])
И это я пока лишь только 2 комбинатора использовал: warblerstar и robinstar из fantasy-birds
Это я пытался переделать на поинт-фри вот этот пример из кукбука ) https://github.com/ramda/ramda/wiki/Cookbook#rename-keys-of-an-object
Самое ужасное, что такой код становится невозможно поддерживать. Вспоминаются подобные беды от длинных регекспов. Которые можно написать, но для исправления требуется больше времени чем для написания )


? animufag ?
02.08.2017
23:12:50
да

Google

? animufag ?
02.08.2017
23:12:58
они нечитаемы
хз почему ты пытаешься достичь этой цели
в хаскел-комьюнити помню гонзалес писал мол забейте писать эти точки и флипы

andretshurotshka?❄️кде
02.08.2017
23:41:57
?
тайлор пилит что-то странное
https://github.com/motorcyclets/compiler

Vadim
03.08.2017
15:54:18

? animufag ?
03.08.2017
16:00:23
тип жёсткий пойнтфри – путь к однострочникам. однострочники при разрастании нуждаются в комментариях, а комментарии – зло. поэтому нужно искать в длинном экспрешене сущности, которые можно проименовать, объявить их как конст (или вынести как общую функцию которая потом пригодится).
и оставить поинтфри в виде one . two . three

Mikhail
03.08.2017
20:16:06
Жесткий point free не нужен

Denis
03.08.2017
20:28:44
Кхм

Дмитрий
03.08.2017
20:30:26
Нормально делай — нормально будет

? animufag ?
03.08.2017
20:32:13

andretshurotshka?❄️кде
04.08.2017
07:02:06