
Alexander
14.09.2018
14:47:27
и haskell
на каком-то
ну или другое фп

Iva
14.09.2018
14:48:11
кока не знаю, скалу знаю с котиками, кок планировал выучить в этом семестре

Google

Евгений
14.09.2018
14:49:04
А что на формальной верификации учат?
ПРОЛОГ

Anton
14.09.2018
14:49:18
Datalog

Iva
14.09.2018
14:49:21
SMT
SAT
я юзал Z3
у меня есть влажная мечта заставить работать key для скалы

Anton
14.09.2018
14:53:29

Iva
14.09.2018
14:54:18
я не знаю теории хорошо, я просто математик с горя с того что за кородон в магистратуру/аспирантуру не взяли переехавший в скалисты

Anton
14.09.2018
14:57:21
еще стоит добавить, что есть несколько диалектов Coq, так что за такое ограниченное время лучше учить то, что потом будет использоваться в проекте (если цель — вкатиться в какой-то проект)

Alexander
14.09.2018
14:58:20
@AntonTrunov тебе кстати твиг что-нибудь ответил?

Iva
14.09.2018
14:58:24
цели такой нет но спецкурс есть

Anton
14.09.2018
14:58:50

Google

Anton
14.09.2018
14:59:35
а у меня потом другой проект появился и я не стал теребить Мэтью

Alexander
14.09.2018
15:00:45
ясно

Yura
14.09.2018
15:10:40
А если я, например, хочу зашарить socket между двумя threads. И закрыть его когда сдохнет только последний поток. Есть возможность это сделать, кроме как через Weak Reference ?
ResourceT не предлагапть

Denis
14.09.2018
15:13:53

Yura
14.09.2018
15:41:04
Я не понял вопрос про managed

Denis
14.09.2018
15:42:00

Yura
14.09.2018
15:42:15
Ок, посмотрю
Я про него не знал
Спасибо

Denis
14.09.2018
15:42:39
кто-видел уже https://hackage.haskell.org/package/kazura-queue ?

Александр
14.09.2018
15:48:22
Третий тред закрывает ресурс

Alexander
14.09.2018
15:52:10
resourcet и то лучше
weak reference слишком ненадёжная штука
но если соберёшься то делай его на mvar в котором сокет хранить будешь
а то шарить ресурс без синхронизированного апи, это такое
третий тред только если он и так и так уже есть
@drcha0s ^

Google

Alexander
14.09.2018
15:55:20
если тебе не поможет resourcet то и managed не поможет
managed это обычный bracket в красивой обертке
а с resourcet можно выразить строго больше, чем с bracket

Denis
14.09.2018
15:58:05
managed это обычный bracket в красивой обертке
ну как бы с ним можно выразить bracket, но это не только bracket
manageBracket :: MonadManaged m => IO a -> (a -> IO b) -> m a
manageBracket create destroy =
managed ( bracket create destroy )

Alexander
14.09.2018
15:58:37
managed это bracket в обертке
позволяет писать их красивее, когда не копится вложенность видимая пользователю
хорошая штука, наверное

Denis
14.09.2018
15:59:24
та черт возьми это просто ContT только удобней

Alexander
14.09.2018
15:59:47
я говорю, что с resourcet можно выразить строго больше
с bracket/managed ты не можешь сделать раннее освобождение ресурса, или передачу ресурса в другой тред
и с bracket/managed и resourcet возможен use after free
т.е. от него они не защищают

Alexander
14.09.2018
16:01:21
вот.

Denis
14.09.2018
16:22:00
я считаю что second в Bifunctor и rmap в Profunctor должны быть удалены, после введения QuantifiedConstraints
потому что хватит такого
class (forall x. Functor (f x)) => Bifunctor1 f where
bimap1 :: forall a b c d. (a -> b) -> (c -> d) -> f a c -> f b d
lmap1 :: forall a b c. (a -> b) -> f a c -> f b c
lmap1 f = bimap1 f id
class (forall x. Functor (f x)) => Profunctor1 f where
dimap1 :: forall a b c d. (a -> b) -> (c -> d) -> f b c -> f a d
lcmap1 :: forall a b c. (a -> b) -> f b c -> f a c

Yura
14.09.2018
16:29:37

Alexander
14.09.2018
16:29:55
там IORef с reference counter

Maxim
14.09.2018
16:30:51
а что вы думаете о ComponentM?

Google

Alexander
14.09.2018
16:31:16
reosourcet это обычный bracket (newIORef []) (releaseReferences) $\x ->Resourcet $ runReaderT f x

Yura
14.09.2018
16:32:21
Значит меня глючит, я когда ему под капот смотрел, кажется weak reference где-то видел

Alexander
14.09.2018
16:32:33
не, никогда не было

Yura
14.09.2018
16:32:48
Но там возможно наряду с IORefом
Я посмотрю

Alexander
14.09.2018
16:32:56
на weak reference нельзя хорошо полагаться, оно сильно зависит от GC
и не prompt

Yura
14.09.2018
16:33:29
Ну мне достаточно чтоб он когда-то закрыл сокет

Alexander
14.09.2018
16:33:30
там каунтер, который для forkResourceT нужен

Admin
ERROR: S client not available

Alexander
14.09.2018
16:34:40
я делаю так:
1. логика вкладывается в bracket - то его или managed
2. не вкладывается - resources
3. вкладывается но нужно забороть use after free - рагионы
регионы
учитывая что у тебя в команде не дураки код пишут мест для 3 почти нет
и.к. защита от use after free идёт дорогой ценой

Yura
14.09.2018
16:35:49
Мне resourceT не очень хочется тащить

Alexander
14.09.2018
16:36:03
могу поспорить ты его уже тащишь

Yura
14.09.2018
16:36:10
Нет

Alexander
14.09.2018
16:36:17
нужна утилита "использую ли я это"

Yura
14.09.2018
16:36:30
Это Легаси хаскел :D

Google

Anton
14.09.2018
16:36:31
Вопрос, кто-нибудь знает хорошие либы для gui в терминале на ascii? Аля, чтобы можно было такое сделать https://github.com/jesseduffield/lazygit

Alexander
14.09.2018
16:36:33
серьезно ни варпа ни кондуитов ничего этого нету?
ещё вариант сделать мини resourcet

Yura
14.09.2018
16:37:37
Да не либу взять не проблема, я не хочу менять существующий код

Maxim
14.09.2018
16:37:45

Anton
14.09.2018
16:38:10

Maxim
14.09.2018
16:38:21
https://serokell.io/ariadne/
тут есть демонстрация чего на нем реально запилить

Alexander
14.09.2018
16:38:23
это надо стек ставить

Anton
14.09.2018
16:39:06
тогда cabal freeze и посмотреть в сгенеренном файле
или он зависимости зависимостей не показывает?

Denis
14.09.2018
16:39:26

Anton
14.09.2018
16:40:38
Daedalus сложно заводится

Maxim
14.09.2018
16:40:51
лол
@VividDesires можешь ещё и работу найти ;)
Приходи к нам работать;) jobs@serokell.io

Anton
14.09.2018
16:41:58
Счас сильно повязан на текущий проект, как доделаю, так сразу

Maxim
14.09.2018
16:42:01
кстати у нашего кошелька полным ходом идет разработка и десктопного приложения
его даже уже можно собрать и поюзать, гайдов только нет никаких

Anton
14.09.2018
16:42:22
Мне CLI больше по душе

Maxim
14.09.2018
16:42:50
github.com/serokell/ariadne