@haskellru

Страница 806 из 1551
Антон
02.02.2018
18:09:02
instance forall a . Foo a => Bar a <=> instance Foo a => Bar a
И теперь написать инстанс Bar можно только для типов, для которых реализован Foo

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
Это ж констрейнт в экземпляре, а не в объявлении класса типов

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
кто пояснит почему codensity дает монаду, а density - комонаду? вроде приставка co должна говорить о комонаде
Потому что "ко-" означает дуальность, а не возможность рассмотрения сущности как комонады

Pig
03.02.2018
15:33:38
Понятия не имею что такое density

coco = id :^D

Вот и все что я хочу сказать

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

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?
Нет, так его просто прозвали в одном из пейперов, который я уже врятли найду.

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 про пробел перегревающий комп)

в конечном итоге я из [Bool] хочу получить ByteString
был binary-bits или как-то так, кривой вусмерть

Антон
03.02.2018
20:46:47
Alexander
03.02.2018
20:47:14
https://xkcd.com/1172/

ааааа

Anatolii
03.02.2018
20:48:08
https://xkcd.com/1172/
Это хорошо, да

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

Антон
03.02.2018
20:49:48
https://xkcd.com/1172/
А, точно. Там ещё стрип про M-x C-c butterfly был

Yuriy
03.02.2018
21:24:34
у merge sources не может быть адекватной семантики.. что делать!!
а вот эта тоже не адекватная? https://hackage.haskell.org/package/conduit-merge

Alexander
04.02.2018
00:40:48
а вот эта тоже не адекватная? https://hackage.haskell.org/package/conduit-merge
тоже ;). на самом деле тут все в порядке, она имеет более ограниченный тип и такая функция имеет адекватную семантику, не ту которой бы хотелось в stm- conduit, но адекватную хотя бы

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

Страница 806 из 1551