
Антон
02.02.2018
18:09:02

kana
02.02.2018
18:09:05
тыкаете свои forall а потом думаете, что это новые фичи

Антон
02.02.2018
18:09:30
А, стоп

Alexander
02.02.2018
18:09:33

Google

Антон
02.02.2018
18:09:39
Я неправильно понял

Alexander
02.02.2018
18:09:45
пожалуйста, если играешь в проксю - проксируй все

Антон
02.02.2018
18:09:57
Это ж констрейнт в экземпляре, а не в объявлении класса типов

Alexander
02.02.2018
18:10:19

Denis
02.02.2018
18:11:32

Alexander
02.02.2018
18:11:50
как? зачем? почему?
это другой инструмент
тут мы только говорим, как зоделать дефотную имплементацию метода
придётся правда писать instance Bar A для всех типов
но там идеальных решений нету
{-# OVERLAPPABLE #-}
instance (Foo a) => Bar a where
bar = foo
{-# OVERLAPPING #-}
instance Bar Int where
bar = 6
если Int не реализует Foo
тогда для всех типов, у которых есть Foo инстанс для Bar будет изкоробки, причем можно определить и для других

Google

Alexander
02.02.2018
18:15:16
но потом пойдут вопросы, а для тех кто реализует Baz тоже надо и что делать, особенно для типов, которые и Foo и Baz умеют
а в stm-conduit с entangledPair вообще не ясно что делать

Антон
02.02.2018
18:15:59

Alexander
02.02.2018
18:16:21
на этом моменте пойдут и будет все плохо
т.е. если для одного класса можно через этот путь или default signatures то, если хочется 2 дефолта то ещё придётся запихнуть метод это разрешающий
что возможно, но выглядит как костыли
хотя я не уверен, что в этом мире есть подходящее решенеие без явного указания что вызывать в любом из языков
где есть множественное отношение принадлежности
и по этому отношению строется инстанс
@lightgreen похоже обновление stm-conduit откладывается минимум до завтра
там все сложно

Denis
02.02.2018
18:55:54
интересно https://github.com/nfrisby/coxswain
https://ghc.haskell.org/trac/ghc/wiki/Plugins/TypeChecker/RowTypes/Coxswain
@A64m_qb0 ^
http://hackage.haskell.org/package/HList-0.2.3/docs/Data-HList-GhcSyntax.html

Даня
03.02.2018
09:16:30
скорее наоборот как раз
Void терминальный
Unit инициальный
(или наоборот)

Alexander
03.02.2018
09:21:49
врятли наоборот
хотя я всегда путаюсь

Index
03.02.2018
09:31:13
Void начальный, Unit конечный

Google

Index
03.02.2018
09:32:01
Потому что из Void к любому другому объекту стрелка начинается (absurd), а в Unit заканчивается (const ())

Alexander
03.02.2018
09:37:13
а да

Даня
03.02.2018
09:38:00
мнемоника, в категории множеств начальный - пустое множество, а конечный - одноэлементное

Alexander
03.02.2018
09:39:58
а в логике False и True
или не True? то, что из False все следует это ясно

Index
03.02.2018
09:44:38
Если стрелка импликация то да, True из чего угодно можно заключить

Yuriy
03.02.2018
09:47:06
и в религиях из небытия возникает Монада (пифагорейская)

Даня
03.02.2018
09:53:32
@qnikst, если рассматривать исчисление высказываний в форме натурального вывода как категорию, то да, False и True. это можно глянуть у Стива Ауди или у Ламбека-Скотта еще

Alister
03.02.2018
10:39:27
Быстрые свидания бесполезны. 30 секунд не хватает для того, чтобы объяснить все преимущества функционального программирования на Haskell.

Dmitry
03.02.2018
11:22:25
?

Denis
03.02.2018
13:04:40
кто пояснит почему codensity дает монаду, а density - комонаду? вроде приставка co должна говорить о комонаде
ну и применимость codensity для того чтобы улучшить Free monad (сделать Church версию) помню читал пейпер про это

Pig
03.02.2018
15:31:50

Denis
03.02.2018
15:32:22

Pig
03.02.2018
15:33:38
Понятия не имею что такое density
coco = id :^D
Вот и все что я хочу сказать

kana
03.02.2018
15:35:32
density создает комонаду
если мы добавим ко, то очевидно что и комонада задуалится, получается
codensity создает монаду
в чем проблема?

Denis
03.02.2018
15:36:36

Google

kana
03.02.2018
15:36:44
ну так уж получилось)

Denis
03.02.2018
15:36:50
я думал плотность - монада
коплотность - комонада
Codensity, Yoneda из Ran
Density, Coyoneda из Lan
если Ran - это обобщение всех continuation то Lan это обобщение всех cocontinuation
какой бы пример найти с cocontinuation? вот например CoCont есть такое?

Admin
ERROR: S client not available

Aleksey
03.02.2018
15:58:38
а можно генерировать полиморфные линзы как-то?
хочу в структуре data F a = F { name :: a } иметь линзу name :: Lens (F a) (F b) a b
makeLenses генерирует мономорфные линзы, т.е. name :: Lens' (F a) a

Denis
03.02.2018
16:43:00
EnvT?

Artyom
03.02.2018
16:46:49
хмммм, да должен вроде полиморфные генерировать, странно
> data F a = F { _name :: a }; makeLenses ''F
> :t name
name
:: (Functor f, Profunctor p)
=> p a1 (f a2) -> p (F a1) (f (F a2))

adam
03.02.2018
16:52:21
EnvT?
Нет, так его просто прозвали в одном из пейперов, который я уже врятли найду.

Антон
03.02.2018
17:06:32

Sergey
03.02.2018
19:18:45
народ, подскажите плз, как [Bool] перевести в байты?

Антон
03.02.2018
19:28:52
Руками не вариант?

kana
03.02.2018
19:30:14
там будет несколько сложнее
у ByteString есть cons, который принимает Word8
то есть нужно разбить массив булов на чанки по 8 булов, каждый чанк превратить в Word8, а потом законсить их все

Sergey
03.02.2018
19:31:46
в конечном итоге я из [Bool] хочу получить ByteString

Yuriy
03.02.2018
19:57:45
начни с take 8
нет, лучше splitAt 8

Google

Yuriy
03.02.2018
20:01:06
порции свернуть с помощью Data.Bits.bit, например
главное — тупо/остроконечность не перепутать

Alexander
03.02.2018
20:30:56
блин у mergeConduit вообще какая-то адская кривая семантика
а исправлять я боюсь, поломаю же юзкейсы
(картинка xkcd про пробел перегревающий комп)

Антон
03.02.2018
20:46:47

Alexander
03.02.2018
20:47:14
https://xkcd.com/1172/
ааааа

Anatolii
03.02.2018
20:48:08

Alexander
03.02.2018
20:48:17
у merge sources не может быть адекватной семантики.. что делать!!

Антон
03.02.2018
20:49:48

Yuriy
03.02.2018
21:24:34

Alexander
04.02.2018
00:40:48

Yuriy
04.02.2018
06:22:28
всё равно не подходит?