Alexander
лучше у @JelF1337 спрашивай, я к fix лояльно отношусь
Alexander
по мне - нормально
доня.
В котлине мэйби на стероидах
ну скорее наоборот, недомейби
Denis
а можно как-то помодульно говорить “инлайнить всё”?
кана
ну я знаю, ты просто как-то сказал, что код для генерации данный лучше не через fix делать, вот я искал кейс для fix тогда
Alexander
но почему fix а не явная рекурсия?
Alexander
@catamorphism была опция инлайнить все
Alexander
и можнов {-# OIPTIONS_GHC её
Denis
и можнов {-# OIPTIONS_GHC её
сейчас найду, спасибо
Alexander
найдешь напиши тут
Alexander
а то я забыл
кана
но почему fix а не явная рекурсия?
давно выработалась привычка не пробрасывать одни и те же аргументы в рекурсии и я начал делать go-функции parsePrompt :: Read a => String -> IO a parsePrompt text = go where go = readEither <$> prompt text >>= \case Right value -> pure value Left error -> do putStrLn error go очевидно что смысла в имени нет и намного логичнее это делать как-то анонимно. fix как раз дает эту анонимную рекурсию
Denis
fix - отличный способ сделать обскурнее на ровном месте
eahqzsr
Некоторые думают что FP это сделать обскурнее на ровном месте.
Зигохистоморфный
promt text >>= either pure ((repeat <<) . putStrLn)
eahqzsr
Монады это сделать обскурнее на ровном месте
eahqzsr
и тп.
adam
Мне понравился пример (<$>) = over Cofree . ana . (<<< unpack) . first
A64m
а можно как-то помодульно говорить “инлайнить всё”?
нету, есть "агрессивно специализировать" которой еще надо откуда-то развертки брать. Правда опция поместить все в развертки есть, но это надо в других модулях
Denis
я вот и не могу найти, про развертки что-то видел, но не более
Alexander
а точно
A64m
fspecialise-aggressively она недокуметированная вроде
Oleg
нет реюзабельности - прозрачность не нужна
eahqzsr
Что скажете насчёт Haxl?
Oleg
но только не через афинное растоговно вместо линтипов
Антон
Другой вопрос - что, собственно, способствует привлечению новичков. Вот давайте выясним: что каждого из вас в Хаскель привело.
В универе про него рассказали. Этого оказалось достаточно, чтобы я сам начал его изучать
Oleg
Чё Что с ними не так?
Ну вот какая транспаренси у токио фьюч?
Oleg
(ответ: ʁɐʞɐʞин)
Антон
Ну вот какая транспаренси у токио фьюч?
Referential trancparency в Rust нет и не будет, скорее всего
Oleg
А "афинные типы" привязаны к аллокации, поэтому всё, что не выражается через RAII идёт боком
Ю ли я? 🤔
ну что-то вроде scope<2>::type scope❤️>::type
Я, наверное, поздновато, но это ж не зависимые типы нихрена.
Антон
А "афинные типы" привязаны к аллокации, поэтому всё, что не выражается через RAII идёт боком
А как сделать аналог Arc с проверкой владения на этапе компиляции?
sherzod
Я, наверное, поздновато, но это ж не зависимые типы нихрена.
а что это тогда?) я совсем мало не знаком с темой, сужу по начальному знакомству с идрис в моем нестрогом понимании это стирание границы между типами и значениями в частности, пример с vect в идрисе почти везде в начальных вещах упоминается, он выразим через плюсовые шаблоны
Ю ли я? 🤔
Эта выразимость заканчивается, как только параметр шаблона перестаёт быть целочисленной константой времени компиляции.
Ю ли я? 🤔
Т. е. даже int foo = readln(); array<int, foo> bar; нельзя. С завтипами - можно
sherzod
хм.. ну мне это пока предстоит в будущем вообще странно, что есть нечто рантаймовое что нам может быть интересно
Oleg
а что это тогда?) я совсем мало не знаком с темой, сужу по начальному знакомству с идрис в моем нестрогом понимании это стирание границы между типами и значениями в частности, пример с vect в идрисе почти везде в начальных вещах упоминается, он выразим через плюсовые шаблоны
основная проблема просто в C++\rust завтипы в любой форме нестираемые, что значит что "свойств" программы ты проверить не можешь, просто вычислить что-то на этапе компиляции. Это просто мощные шаблоны
Denis
как только ты начинаешь работать с вектором неизвестной длины - длина попадает в рантайм
Oleg
Ну и конечно, вся эта фигня одноуровневая, у тебя не может быть завтипа, зависящего от значения переменной завтипа
sherzod
спасибо ну просто заглядывая вперёд, что полезного мы можем извлечь в компайлтайме имея в рантайме? int foo = readln(); array<int, foo> bar;
Oleg
Ну и почти что вследствие нестираемости сигма-тип невыразим. О чём тут разговаривать
Oleg
Ну или ладно, я не знаю последних тенденций в темплейтах, может стал выразим уже
Ю ли я? 🤔
Ну и почти что вследствие нестираемости сигма-тип невыразим. О чём тут разговаривать
Человек начал с темой знакомиться, может не надо его сразу вот таким вот?
Антон
язык 70-х с добовлением пары модно-молодежных фич из 90-х
Ну, создатели Rust не хотели повторить судьбу Хаскелля прост
Oleg
спасибо ну просто заглядывая вперёд, что полезного мы можем извлечь в компайлтайме имея в рантайме? int foo = readln(); array<int, foo> bar;
Ну самое простое. Ты можешь извлечь полезного в рантайме имея exists n. (names: vector<n, String> ,ages: vector<n, Int>) из этого как минимум можешь сделать безопасно names.zip(ages)
Oleg
Человек начал с темой знакомиться, может не надо его сразу вот таким вот?
Не в первый раз с человеком общаемся. Всё с ним будет ок
A64m
Ну, создатели Rust не хотели повторить судьбу Хаскелля прост
тогда надо было язык 60-х годов делать, как Пайк
sherzod
Человек начал с темой знакомиться, может не надо его сразу вот таким вот?
ну в общих чертах понятно) видимо сигма как-то связана с тем что мы гвоздями прибиваем число 10 в размер массива))
sherzod
всё. понял.
sherzod
надо подумать про выразимость в плюсах тогда..
Ю ли я? 🤔
Oleg
Щас бы на ЛОР про завтипы читать
Антон
Щас бы на ЛОР про завтипы читать
s/про завтипы/что угодно/g
Oleg
Ну завтипы Haskell vs C++ это конечно битва титанов, практически, как ФП javascript vs python
Ю ли я? 🤔
Вы так говорите, будто это что-то плохое
A64m
Хаскелля, а не Лиспа
в этом случае без разницы
Антон
A64m
И тащить в язык днище? Ну нафиг
ну повторит судьбу хаскеля тогда.
Антон
ну повторит судьбу хаскеля тогда.
Кхм. ЕМНИП, Rust уже популярнее Haskell'а
Oleg
Кхм. ЕМНИП, Rust уже популярнее Haskell'а
просто ты больше времени в расточате проводишь
A64m
Кхм. ЕМНИП, Rust уже популярнее Haskell'а
ну как петя повыше васи, примерно, а был бы языком 60-х разница была-бы как между васей и 24-хэтажкой
Ю ли я? 🤔
В crates.io за ~три года уже больше пакетов нахреначили, чем в hackage за всё время его существования
Ю ли я? 🤔
Не понимаю, к чему это сообщение, если речь была о Rust и Haskell.