
dimiii
21.09.2018
14:46:00

Alexander
21.09.2018
14:46:17
драйвера к postgres?

dimiii
21.09.2018
14:46:43

Alexander
21.09.2018
14:49:02
есть 3 либы которые можно назвать драйвером:
- postgres-wire (ссылку вы видели выше)
- postgresql-libpq
- odbc
посмотрите например postgresql-libpq например как самую популярную

Google

Alexander
21.09.2018
14:49:13
хотя я не уверен, что там хороший и эффективный код
liftA* там нету
даже не знаю в какой либе дров к pg они могли быть
но учитывая, что это байндинг к либе - код там специфический

Владислав
21.09.2018
14:59:04
15 процентов дошли до «конца» в первый раз.
из них
дошло 9 процентов на втором курсе.
итого, в хаскеле до финала доходит 1,6 процентов.
Это со степика

Alexander
21.09.2018
15:00:21
вторая часть скучновата и сбивчива
там возникает очущение, что ты что-то делаешь, но не ясно зачем

Владислав
21.09.2018
15:02:05

Alexander
21.09.2018
15:02:29
в формате степика даже не знаю

Alexander
21.09.2018
15:02:35

Google

Alexander
21.09.2018
15:03:00
ну там начинаются копипасты инстансов 100500 раз

Владислав
21.09.2018
15:03:09
конечно, о хаскелистах как о небожителях думают, раз они прошли такой отбор.

Alexander
21.09.2018
15:03:15
т.е. оно *нужно* для понимания
но не все выдержат
демидовича тоже не все прорешивают

dimiii
21.09.2018
15:03:30

Alexander
21.09.2018
15:03:59
текущая версия либы никиты это все же не драйвер
он хочет драйвер сделать, насколько я знаю
так то есть postgresql-simple поверх postgresql-libpq
может оно?
@willbasky третья часть на мой взгляд разумна только специализированная
т.е. изучение какой-то области с примерами на Haskell

Владислав
21.09.2018
15:06:51

Alexander
21.09.2018
15:07:19
системы типов, компиляторы те же
ML
это в универах

Alexander
21.09.2018
15:08:06

Владислав
21.09.2018
15:09:27
Кто-нибудь встречал туториал по squeal кроме того, что есть в доках и на ютюбе от автора?

Alexander
21.09.2018
16:41:06
стикеры на канале не работают

Google

Igor
21.09.2018
16:43:16
Кажется, я не планировал сюда что-то писать, сорян

Alexander
21.09.2018
16:46:03
все ок

Ilya
21.09.2018
20:23:49
GHC 8.6.1 вроде релизнулся? Что там интересного?:)

A64m
21.09.2018
20:28:48
вроде нет еще

Ilya
21.09.2018
20:29:00
я в гите видел
http://git.haskell.org/ghc.git

A64m
21.09.2018
20:31:23
а, тег поставили.
ну, значит в течении нескольких дней соберут под основные платформы и анонс напишут
а что нового тут написано
https://downloads.haskell.org/~ghc/8.6.1-beta1/docs/html/users_guide/8.6.1-notes.html
языковые фичи новые - DerivingVia и QuantifiedConstraints
из неязыковых - поиск подстановок для типодырок сильно лучше чем в 8.4
ну и всякие синтаксические мелочи вроде
for_ [0, 10_000 .. 100_000] \i -> print i

Alexander
21.09.2018
20:35:59
:doc в этом?

A64m
21.09.2018
20:36:18
а, да, доки еще
можно в гхци смотреть
еще хип-вью из коробки
больше можно плагинами делать
ну и конечно новая фича оптимизатора, оптимизирующая 1 в 3, которая попала в гхц только благодаря единственному человеку, который про нее не забыл - мне
https://ghc.haskell.org/trac/ghc/ticket/9136#comment:26

Leonid
21.09.2018
21:30:26
GHC now supports British spelling of GeneralizedNewtypeDeriving.
Nice

Евгений
21.09.2018
21:40:18

Google

kana
21.09.2018
22:26:26
как сделать всегда верный констрейнт вида Type -> Constraint
class Any a
instance Any a
очевидно

Admin
ERROR: S client not available

Dmitry
22.09.2018
03:58:01
Такое же ощущение изучения сферических коней возникло

Yuriy
22.09.2018
06:16:05

kana
22.09.2018
07:58:41
Any x тут неделим, Any сам по себе нельзя использовать

Yuriy
22.09.2018
08:38:55
тут нет типа Type -> Constraint
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE KindSignatures #-}
type Any a = (() :: Constraint)
λ> :k Any
Any :: * -> Constraint

kana
22.09.2018
08:39:24
ну не получится тут отдать Any сам по себе

Yuriy
22.09.2018
08:39:30
да, твой вариант class + instance лучше

kana
22.09.2018
08:40:07
class X a where
type C a :: Type -> Constraint
instance F Int where
type C Int = Any
вообще немного поработав с классами с ассоциативными констрейтами, которые потом в элементах класса встречаются, могу сделать вывод, что это крайне неудобно, наверное должен быть способ лучше это делать, про который мы пока не знаем
как минимум типолямбды все немного упрощают
в которые нет ни одного движения, хоть вроде ghc даже форкали и писали рабочий вариант

Yuriy
22.09.2018
08:44:41
(const ()) ограничение кажется лишней сущностью, когда можно взять ()

alexknvl
22.09.2018
08:49:12
class Any a
instance Any a
class X a (c :: Type -> Constraint) | a -> c
instance X Int Any
можно вот так

Google

Alexander
22.09.2018
08:54:45


kana
22.09.2018
09:08:24
это стало решающим
{-# LANGUAGE RankNTypes
, TypeOperators
, MultiParamTypeClasses
, TypeInType
, TypeFamilies
, UndecidableInstances
, StandaloneDeriving
#-}
import Prelude hiding (Functor, map)
import Data.Kind
import Data.Function (fix)
class Category cat where
cat_id :: a `cat` a
cat_compose :: b `cat` c -> a `cat` b -> a `cat` c
instance Category (->) where
cat_id = id
cat_compose = (.)
instance Category (~>) where
cat_id = Nat id
cat_compose f g = Nat (runNat f . runNat g)
class (Category cat1, Category cat2) => Functor cat1 cat2 (f :: obj1 -> obj2) where
type C f (a :: obj1) :: Constraint
map :: C f a => (a `cat1` b) -> (f a `cat2` f b)
instance Functor (->) (->) Maybe where
type C Maybe a = ()
map = fmap
instance Functor (~>) (->) Fix where
type C Fix f = (Functor (->) (->) f, C f (Fix f))
map eta = fix (\f -> Fix . runNat eta . map f . unFix)
newtype f ~> g = Nat { runNat :: forall x. f x -> g x }
newtype Fix f = Fix { unFix :: f (Fix f) }
deriving instance Show (f (Fix f)) => Show (Fix f)
toList :: Maybe a -> [a]
toList (Just x) = [x]
toList Nothing = []
x :: Fix Maybe
x = Fix (Just (Fix (Just (Fix Nothing))))
y :: Fix []
y = map (Nat toList) x
наконец описал инстанс функтора для Fix


Yuriy
22.09.2018
09:13:16
повторяешь https://hackage.haskell.org/package/categories?

Denis
22.09.2018
09:14:25

Yuriy
22.09.2018
09:15:32
классы и у Кметта, и у @kana_sama свои

kana
22.09.2018
09:16:14

Denis
22.09.2018
09:16:25

Yuriy
22.09.2018
09:16:47