Влод
вообще там вроде нету индикации что я залогинен
Denis
У меня в Q монаде есть список Name(в нем забайнденные переменные) и конструктор. Можно как-нибудь это [e|Contructor $(дофига полей)|] вжухнуть?
Denis
там на самом деле чуть хитрее выражение, поэтому я хотел обойтись без foldM и appE
Зигохистоморфный
как нибудь через traverse?
Denis
ничего лучше foldM не вижу
Denis
видимо придется так
Дмитрий
А что можно ждать от 8.6?
Дмитрий
Тайп левелы я не жду раньше чем 8.8...
Евгений
Дмитрий
Так не интересно :(
Дмитрий
Я же как ребёнок в ожидании НГ, застываю в ожидании нового компилятора :)
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)
Oleg
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
Igorek
Меня интересует должны ли появляться сайд эффекты внутри do нотации или они только появятся при распаковке самого результата
Aleksei (astynax)
> Это for похож на хаскеллевский do
мы просто не стали это уточнять :)
Igorek
Например у меня 2 Future
Aleksei (astynax)
Igorek
И выполнятся они уже когда я сделаю for , или же как только я сделаю Future.get() от результата
Oleg
Igorek
Понял
Igorek
Ну к примеру
Alexander
Oleg
Aleksei (astynax)
A64m
> не выглядеть высокомерным говном, который как-бы насмехается на другими языками в каждой своей реплике
но это же делает написание текстов и постов в интеренете полностью бессмысленным
Евгений
Oleg
Ну к примеру
Если брать либы, которые совсем явно скопированы с хаскелёвой асинхронности, стоит сравнивать с monix\cats-effect.
Фундаментальная проблема Future в том, что она strict + single use, поэтому ломает referential transparency.
Поэтому если говорить именно о Future в скалке, то внутри for очень даже запустятся сайд-эффекты.
А вот в хаскелёвом IO, cats IO, monix Task\Coeval - не запустятся
Alexander
Igorek
Aleksei (astynax)
Да полно уже этих восстановлений
Aleksei (astynax)
Надоело
Alexander
И можно теперь агриться?
A64m
не нужно
Aleksei (astynax)
Когда новичёк приходит, ему не нужно знать, что раньше появилось - do или for. Ему нужно подобрать аналогию
A64m
уже давно пора наоборот выгонять
Aleksei (astynax)
Так нет ничего оригинального в Х же
Aleksei (astynax)
Всё понатаскано из других языков
Евгений
A64m
есть
Aleksei (astynax)
Оригинальна комбинация известных фич
Alexander
Aleksei (astynax)
Alexander
Евгений
Ну констрейнт кайнды точно придумали в Хаскеле
Oleg
Евгений
И вообще типам дуальная
Aleksei (astynax)
Aleksei (astynax)
Alexander
Как правило, это приводит к разрушению сообщества рано или поздно. Но может быть, оно и поделом
Евгений
Ну у нас не сообщество, ибо нет установочного проекта. Скорее чат состоит из клубка личных отношений, и держится на нескольких сотрудниках хаскель-ориентед контор
Евгений
И харизме клапауция (нет)
Aleksei (astynax)
Тут такой же чат, как все другие чаты. Просто тематика слегка перекошена в сторону Haskell (что не увеличивает полезность чата для хаскелистов практически)
kosc
Я на этот чат переключаюсь, когда не хочу палить, что у меня в переписке.
Евгений
kosc
Никто из коллег и начальства ничерта не понимает, что тут происходит.
kosc
И всякие стрёмные NSFW-пикчи вы не кидаете.
Aleksei (astynax)
Вот да, стикеров и картинок тут мало
Aleksei (astynax)
У мну обратная картина :)
kosc