Влод
вообще там вроде нету индикации что я залогинен
Denis
У меня в Q монаде есть список Name(в нем забайнденные переменные) и конструктор. Можно как-нибудь это [e|Contructor $(дофига полей)|] вжухнуть?
Denis
там на самом деле чуть хитрее выражение, поэтому я хотел обойтись без foldM и appE
Зигохистоморфный
как нибудь через traverse?
Denis
ничего лучше foldM не вижу
Denis
видимо придется так
Дмитрий
А что можно ждать от 8.6?
Дмитрий
Тайп левелы я не жду раньше чем 8.8...
Евгений
А что можно ждать от 8.6?
Отсутствие фичей
Дмитрий
Так не интересно :(
Дмитрий
Я же как ребёнок в ожидании НГ, застываю в ожидании нового компилятора :)
A64m
точно: литералы с подчеркиваниями 1_000_000 возможность не ставить $ перед лямбдами и ду-блоками возможно: QuantifiedConstraints анлифтнутые ньютайпы новые примитивы меньше слова и анпаки для них маловероятно: or-паттерны мутабельные объекты deriving via
Евгений
Мутабельные объекты это как?
Дмитрий
>литералы с подчеркиваниями 1_000_000 >возможность не ставить $ перед лямбдами и ду-блоками Удобно. QuantifiedConstraints Это что? >новые примитивы меньше слова и анпаки для них Это они будут по несколько бит что ли? Хочу! Только непонятно, как это будет реализовано к компилятором в железе. >or-паттерны Это что? Возможность сравнивать по нескольким паттернам? foo ((Point2 x y) or (Point3 x y _)) = ... Таак что ли? >мутабельные объекты А разве под копотом этой оптимизации не происходит? >deriving via А это что?
A64m
> QuantifiedConstraints > Это что? https://ryanglscott.github.io/2018/03/04/how-quantifiedconstraints-can-let-us-put-join-back-in-monad/ > Это они будут по несколько бит что ли? по несколько байт, меньше 8 > >or-паттерны (Left a | Right a) -> a > А разве под копотом этой оптимизации не происходит? нет > >deriving via > А это что? https://gist.github.com/Icelandjack/d258b88a0e0b3be2c0b3711fdd833045
Дмитрий
Благодарю.
Denis
Or-patterns кто-то хочет в хаскель притащить? Только сегодня о них думал.
A64m
Мутабельные объекты это как?
с мутабельными полями, нынешние иорефы это такой частный случай с одним мутабельным полем
Зигохистоморфный
как сделать так, чтобы constraint был доступен в AdvSem? class BaseSem sem where type Pre sem a :: Constraint val :: Pre sem a => a -> sem a add :: Pre sem a => sem a -> sem a -> sem a newtype E a = E { eval :: a } deriving Show newtype S a = S { showS :: String } deriving Show -- eval (add (val 10) (add (val 20) (val 200)) :: E Int) instance BaseSem E where type Pre E a = Num a val v = E v add x y = E $ (eval x) + (eval y) -- showS (add (val 10) (add (val 20) (val 200)) :: S Int) instance BaseSem S where type Pre S a = Show a val v = S $ show v add x y = S $ "(" <> (showS x) <> " + " <> (showS y) <> ")" class BaseSem sem => AdvSem sem where mul :: sem a -> sem a -> sem a instance AdvSem E where type Pre E a = Num a -- ‘Pre’ is not a (visible) associated type of class ‘AdvSem’ mul x y = E $ (eval x) * (eval y)
A64m
> The recent nightly-2018-03-13 uncovered a bug in Stack: it assumes that these two packages are present in all snapshots to apply a historical, hacky fix.
Igorek
Do нотация в хаскеле это тоже самое что и for/yield в скале?
Aleksei (astynax)
Это синтаксический сахар для (>>=) и return, которые уже похожи на for/yield, да
Aleksei (astynax)
А так на скаловский for больше похожи monad comprehensions
Oleg
Do нотация в хаскеле это тоже самое что и for/yield в скале?
for где-то посередине между между do и comprehensions
Alexander
Это синтаксический сахар для (>>=) и return, которые уже похожи на for/yield, да
Наоборот же. Это for похож на хаскеллевский do, потому что его делали с идеей повторить успех хаскельных монад, и присахарить дополнительные возможности
Igorek
Меня интересует должны ли появляться сайд эффекты внутри do нотации или они только появятся при распаковке самого результата
Aleksei (astynax)
> Это for похож на хаскеллевский do мы просто не стали это уточнять :)
Igorek
Например у меня 2 Future
Oleg
Наоборот же. Это for похож на хаскеллевский do, потому что его делали с идеей повторить успех хаскельных монад, и присахарить дополнительные возможности
Полагаю Алексей воспользовался симметрией отношения "похоже" и сформулировал так, чтобы не выглядеть высокомерным говном, который как-бы насмехается на другими языками в каждой своей реплике, дабы не отпугнуть новичков
Aleksei (astynax)
Меня интересует должны ли появляться сайд эффекты внутри do нотации или они только появятся при распаковке самого результата
вообще не будут появляться, пока итоговое монадическое значение не будет "запущено"
Igorek
И выполнятся они уже когда я сделаю for , или же как только я сделаю Future.get() от результата
Igorek
Понял
Igorek
Ну к примеру
Oleg
Токсичненько
контртоксин
A64m
> не выглядеть высокомерным говном, который как-бы насмехается на другими языками в каждой своей реплике но это же делает написание текстов и постов в интеренете полностью бессмысленным
Oleg
Ну к примеру
Если брать либы, которые совсем явно скопированы с хаскелёвой асинхронности, стоит сравнивать с monix\cats-effect. Фундаментальная проблема Future в том, что она strict + single use, поэтому ломает referential transparency. Поэтому если говорить именно о Future в скалке, то внутри for очень даже запустятся сайд-эффекты. А вот в хаскелёвом IO, cats IO, monix Task\Coeval - не запустятся
Aleksei (astynax)
Да полно уже этих восстановлений
Aleksei (astynax)
Надоело
Евгений
Не вижу ничего плохого в восстановлении исторической справедливости.
Нужно не справедливость восстанавливать, а заманивать людей в секту, ну
Alexander
И можно теперь агриться?
A64m
не нужно
Aleksei (astynax)
Когда новичёк приходит, ему не нужно знать, что раньше появилось - do или for. Ему нужно подобрать аналогию
A64m
уже давно пора наоборот выгонять
Oleg
Не вижу ничего плохого в восстановлении исторической справедливости.
Просто можно случайно стриггерить @A64m_qb0, и он такой справедливости понавосстанавливает, что хаскель по оригинальности упадёт ниже айфонов
Aleksei (astynax)
Так нет ничего оригинального в Х же
Aleksei (astynax)
Всё понатаскано из других языков
A64m
есть
Aleksei (astynax)
Оригинальна комбинация известных фич
A64m
А HKT откуда?
зависит от того, считать ли гофер хаскелем
Aleksei (astynax)
Это не новичковый канал. Не вижу в правилах ограничений
Это верно. Но новички всё равно сюда заходят :)
Евгений
Ну констрейнт кайнды точно придумали в Хаскеле
Alexander
Это верно. Но новички всё равно сюда заходят :)
И видят, как тут поливают помоями в ответ на совершенно нейтральное сообщение, не так ли? Вы же хотели отзывчивое сообщество делать.
Oleg
Ну констрейнт кайнды точно придумали в Хаскеле
Потому что в других языках это просто типы?
Евгений
Потому что в других языках это просто типы?
Ну это же не типы, а сущность неотрывная от hkt
Евгений
И вообще типам дуальная
Aleksei (astynax)
И видят, как тут поливают помоями в ответ на совершенно нейтральное сообщение, не так ли? Вы же хотели отзывчивое сообщество делать.
Да не, я в целом не против. Наоборот - тут присутствует минимум цензуры и вообще все всех кибербулят
Alexander
Как правило, это приводит к разрушению сообщества рано или поздно. Но может быть, оно и поделом
Евгений
Ну у нас не сообщество, ибо нет установочного проекта. Скорее чат состоит из клубка личных отношений, и держится на нескольких сотрудниках хаскель-ориентед контор
Евгений
И харизме клапауция (нет)
Aleksei (astynax)
Тут такой же чат, как все другие чаты. Просто тематика слегка перекошена в сторону Haskell (что не увеличивает полезность чата для хаскелистов практически)
kosc
Я на этот чат переключаюсь, когда не хочу палить, что у меня в переписке.
kosc
Никто из коллег и начальства ничерта не понимает, что тут происходит.
kosc
И всякие стрёмные NSFW-пикчи вы не кидаете.
Aleksei (astynax)
Вот да, стикеров и картинок тут мало
Евгений
Вот да, стикеров и картинок тут мало
Ну практически в любом техническом чате их мало (если это не чат по расту)
Aleksei (astynax)
У мну обратная картина :)