Alexander
текущая версия либы никиты это все же не драйвер
Alexander
он хочет драйвер сделать, насколько я знаю
Alexander
так то есть postgresql-simple поверх postgresql-libpq
Alexander
может оно?
Alexander
@willbasky третья часть на мой взгляд разумна только специализированная
Alexander
т.е. изучение какой-то области с примерами на Haskell
Vladislav
Vladislav
Alexander
системы типов, компиляторы те же
Alexander
ML
Alexander
это в универах
саша
Vladislav
Кто-нибудь встречал туториал по squeal кроме того, что есть в доках и на ютюбе от автора?
Alexander
стикеры на канале не работают
Cucumba
Кажется, я не планировал сюда что-то писать, сорян
Alexander
все ок
Ilya
GHC 8.6.1 вроде релизнулся? Что там интересного?:)
A64m
вроде нет еще
Ilya
я в гите видел
Ilya
http://git.haskell.org/ghc.git
A64m
а, тег поставили.
A64m
ну, значит в течении нескольких дней соберут под основные платформы и анонс напишут
A64m
а что нового тут написано
https://downloads.haskell.org/~ghc/8.6.1-beta1/docs/html/users_guide/8.6.1-notes.html
A64m
языковые фичи новые - DerivingVia и QuantifiedConstraints
A64m
из неязыковых - поиск подстановок для типодырок сильно лучше чем в 8.4
A64m
ну и всякие синтаксические мелочи вроде
for_ [0, 10_000 .. 100_000] \i -> print i
Alexander
:doc в этом?
A64m
а, да, доки еще
A64m
можно в гхци смотреть
A64m
еще хип-вью из коробки
A64m
больше можно плагинами делать
A64m
ну и конечно новая фича оптимизатора, оптимизирующая 1 в 3, которая попала в гхц только благодаря единственному человеку, который про нее не забыл - мне
https://ghc.haskell.org/trac/ghc/ticket/9136#comment:26
Leonid 🦇
GHC now supports British spelling of GeneralizedNewtypeDeriving.
Nice
Евгений
кана
как сделать всегда верный констрейнт вида Type -> Constraint
кана
class Any a
instance Any a
очевидно
Dmitry
Dmitry
Такое же ощущение изучения сферических коней возникло
Cheese
кана
Any x тут неделим, Any сам по себе нельзя использовать
Cheese
тут нет типа Type -> Constraint
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE KindSignatures #-}
type Any a = (() :: Constraint)
λ> :k Any
Any :: * -> Constraint
кана
ну не получится тут отдать Any сам по себе
Cheese
Cheese
да, твой вариант class + instance лучше
кана
class X a where
type C a :: Type -> Constraint
instance F Int where
type C Int = Any
кана
вообще немного поработав с классами с ассоциативными констрейтами, которые потом в элементах класса встречаются, могу сделать вывод, что это крайне неудобно, наверное должен быть способ лучше это делать, про который мы пока не знаем
кана
как минимум типолямбды все немного упрощают
кана
в которые нет ни одного движения, хоть вроде ghc даже форкали и писали рабочий вариант
Cheese
Cheese
(const ()) ограничение кажется лишней сущностью, когда можно взять ()
Big Bux Chungus
class Any a
instance Any a
class X a (c :: Type -> Constraint) | a -> c
instance X Int Any
Big Bux Chungus
можно вот так
Alexander
кана
кана
это стало решающим
кана
наконец описал инстанс функтора для Fix
Cheese
повторяешь https://hackage.haskell.org/package/categories?
Cheese
классы и у Кметта, и у @kana_sama свои
Cheese
кана
но все равно сделаю вывод, что работать с ассоциативными констрейтами неудобно
Big Bux Chungus
Зигохистоморфный
Big Bux Chungus
кана
хитрый constraint в Fix
да, вот в нем и неудобство, слишком много старнный констрейтов придется требовать для обобщенного кода, который будет такое использовать
кана
кана
и там такое как выше не опишешь уже)
Зигохистоморфный
а по поводу категориальности, есть еще такой пакет
https://github.com/sjoerdvisscher/data-category
кана
кана
то есть вот тут у нас инстанс над Fix, а ограничивать нужно аргументы для Fix
Big Bux Chungus
есть ещё https://github.com/mikeizbicki/subhask
Big Bux Chungus
по-хорошему надо как-то так:
class Category (cat :: k -> k -> *) where
type Obj cat (a :: k) :: Constraint
id :: Obj cat a => cat a a
(.) :: (Obj cat a, Obj cat b, Obj cat c) => cat b c -> cat a b -> cat a c
instance Category (->) where
type Obj (->) a = ()
id = P.id
(.) = (P..)
newtype f ~> g = Nat { runNat :: forall x. f x -> g x }
instance Category (~>) where
type Obj (~>) a = ()
id = Nat id
(.) f g = Nat (runNat f . runNat g)
class (Category cat1, Category cat2, forall a. Obj cat1 a => Obj cat2 (f a)) =>
Functor (cat1 :: k1 -> k1 -> *) (cat2 :: k2 -> k2 -> *) (f :: k1 -> k2) where
map :: (Obj cat1 a, Obj cat1 b) => (a `cat1` b) -> (f a `cat2` f b)
Big Bux Chungus
но GHC у меня слишком старый для QuantifiedContexts
Big Bux Chungus
это тебе и даст C Fix f => C f (Fix f)