Aliester
Меня забанили?
Aliester
Yurii
Меня забанили?
Хаскель комьюнити не банит, а создает забаненую копию
Антон
Угу, и если о ней теряется память, то автоматически удаляется
Aliester
Lazy ban
Alexander
кто бота пригласил?
Alexander
боты они как боттом. Населяют каждый чатик
Антон
Возможно, но все просо фидят
PsyDebug
Вот ghci я под него не увидел, но хоть erl есть в пакетах
Alexander
@L2Rldi9yYW5kb20K пожалуйста не веди себя прилично
Alexander
Надо нашему гостю сделать монаду "Хабар".
Alexander
Пусть это будет такая монада, которую разворачиваешь, и у тебя эффект какой-нибудь. Здоровье, там, выносливость. И чтобы разные хабары компоновать можно было
Alexander
кастомер умер
Anonymous
ok
Anonymous
хм
Anonymous
Не эвалится
Dmitry
Да?
Anonymous
нет, не эвалится. Неправильный лисп
Anonymous
А если бы эвалилось оставил бы?
xxxxchg
maybe
Vladislav
Моей библиотекой никто же не станет пользоваться, если в ней основной оператор будет EN DASH? Эххх
Vladislav
Минус б сошёл, но его занял Num
Anonymous
Бери минус.
Есть import qualified
Aliester
бери сердечко
Alexey
А разве нельзя минус оверрайднуть для типов библиотеки только?
Vladislav
Ну во-первых это будет страшное преступление, потому что там даже не близко к Num-классу, во-вторых в моем случае типы не сойдутся.
Alexey
там точно нужен минус? что-то вычитается из чего-то?
Alexey
или минус - он просто как бы метафора операции?
Vladislav
Vladislav
Там вот такое
Leonid 🦇
возьми .--
Vladislav
Я что вместо - не попробую, выходит operator soup.
Vladislav
Для применений функции хочется что-нибудь lightweight, пока что второй кандидат это !
Vladislav
Ну как бы там дальше идет еще этот # и по-дурацки выходит
Alexey
Просто я в хаскелле не специалист, здесь сижу, чтобы мудрости набраться, но вот в плюсах строго не рекомендовали переписывать операторы вне семантики. Например, для класса кватернионов переопределить арифметику - это збс, а вот переопределить операторы бинарного сдвига для перенаправления стандартного ввода / вывода - это abominable
Vladislav
Идеально было бы infix overloaded labels, конечно.
A64m
ВОТ ТАК УЖАС
Vladislav
да конечно, больше букв писать, как такое могло в голову придти
A64m
да ладо писать, это же ЧИТАТЬ придется
Vladislav
Так читать-то такое явно приятнее, сразу видно какой параметр что означает
Vladislav
К тому же здесь так сказать first-class эти аргументы, так что если их пробрасывать глубже по коллстэку, то имена писать не нужно
A64m
для этого можно рекорды применять, у них хоть синтаксис нормальный, а это похоже на кофескрипт какой-то, прости г-ди
Vladislav
ну и как ты рекорды применишь, без объявления рекорда на каждую функцию?
Vladislav
И еще конструктор рекорда писать
A64m
с объявлением, конечно
Vladislav
Text.replace Text.ReplaceArguments
{ haystack = path
, needle = "$HOME"
, replacement = "/home/username"
}
вот лучше-то стало
Vladislav
Сразу душенька радуется, скобки фигурные, запятые, всё как у людей.
A64m
да, лучше
Vladislav
Vladislav
я бы еще купился на этот аргумент в языке в first class records
A64m
не для реплейса конечно, для него было бы лучше replace ("/home/username" <$ "$HOME")
A64m
да, лучше бы было анонимные рекорды тогда уж делать, а не костыли для убогого некомпозабельного апи
Vladislav
А здесь, например, частью мотивации было заменить Bool-флаги, которые в некоторые функции у нас передаются, имена им вот дать. Я говорю, мол, в ньютайпы всё обернуть, но понимаю, что ни у кого кроме меня на это терпения не хватит, там ведь нужно объявления писать, экспорты
Vladislav
Ну следующий шаг понятен, надо человеческие ньютайпы заменить на эти гадские OverloadedLabels с Symbol, заменил.
Vladislav
А раз это сделано, то порядок сделать произвольным это просто небольшое улучшение, в принципе оно не обязательное, но мне нравится.
A64m
а уж никаких функций с параметрами типа Bool (кроме bool) и вовсе быть не должно
Vladislav
Как ты флаги будешь передавать?
Vladislav
В ньютайп Bool обернуть, или сделать data IsFlag = YesFlag | NoFlag
Vladislav
Но этого делать никто, конечно, не будет, я уже сказал.
A64m
так тоже никто не будет писать
Vladislav
Потому что это во-первых неймспейс заполняет, во-вторых требует топ-левельных деклараций, в-третьих экспортов
Vladislav
так тоже никто не будет писать
ну с этим я спорить не буду пока что, еще неизвестно, но вообще идея не исключительно моя, я это просто заимплементил, там предлагалось что-то строго хуже для этого, в итоге всем пока что понравилось
Vladislav
ну и "фу-у-у кофескрипт" основывается на неприязни к кофескрипту, которая вообще-то не у всех
Artyom
ага, тут либу нашу диссят
Vladislav
не щад но
Artyom
да хотя нет, вроде не особо и диссят 🤔
Anonymous
А разве нельзя минус оверрайднуть для типов библиотеки только?
Переписать нельзя и нет надобности.
Но в своём модуле можно определить оператор, похожий на оператор, определённый в других модулях.
При использовании нового оператора достаточно указать alias qualified, и всё - прилично.
По-моему, лучше так, чем операторы в 3+ символа
Vladislav
Зигохистоморфный
A64m
можно же еще let ?needle = "$HOME"; ?replacement = "/home/username" in replace path
Vladislav
А ну да, лучшее расширение Хаскеля
A64m
получше лейблов-то
A64m
хоть не мотивирует всех адовые сиротские инстансы писать
Vladislav
ну нет, мне лейблы не нравятся потому что Symbol, а здесь тоже Symbol, только еще shadowing-семантика убийственная
Vladislav
A64m
но большинство фокусов для которых они предназначены без сирот если и сделать, то так, что непонятно становится, за что боролись
A64m
ах да, тут как раз такой случай
Vladislav
Ну как подвезут анонимные рекорды, так можно будет говорить о чем-то