@haskellru

Страница 1022 из 1551
A64m
27.03.2018
11:57:57
наверное

Alexander
27.03.2018
11:58:35
ну да.. кто ж такие вещи в API выставляет :/

ладно сделаю через fold

Google
? animufag ?
27.03.2018
11:58:58
ну тип второе поведение меня бы не так запутало, но нужно было именно первое

? animufag ?
27.03.2018
12:06:44
ну да не очень оформлен пример string "1" <++> ((string "2"" <++> string "3") <|> string "4") парсит (и возвращает как результат) 123 14 не парсит 124

Alexander
27.03.2018
12:09:22
+

? animufag ?
27.03.2018
12:11:01
что?))

Alexander
27.03.2018
12:11:39
понял

aka да, aka согласен и т.п.

Александр
27.03.2018
12:59:31
Описал свою фримонадную STM. Статью не перечитывал, могут быть баги. https://habrahabr.ru/post/350628/

Дмитрий
27.03.2018
13:00:33
Интересно

Alexander
27.03.2018
13:18:50
@graninas retry используется для блокировки в stm

используется ~ значит

отмена это throwSTM

но это мелочи

Google
Alexander
27.03.2018
13:22:12
data STMF next where NewTVar :: a -> (TVar a -> next) -> STMF next WriteTVar :: TVar a -> a -> next -> STMF next ReadTVar :: TVar a -> (a -> next) -> STMF next это не GADT это ADT

Denis
27.03.2018
13:22:27
ага

нет фантома

Александр
27.03.2018
13:22:42
Гм

Alexander
27.03.2018
13:22:43
нет, все типы справа одинаковые

Александр
27.03.2018
13:22:44
Окай

Alexander
27.03.2018
13:22:48
STMF next

если бы был какой-то скажем STMF ()

был бы GADT

Александр
27.03.2018
13:23:30
Хм, хм

Alexander
27.03.2018
13:24:01
т.е. data STMF next = NewTVar a (TVar a -> next) | WriteTVar (TVar a) a next | ReadTVar (TVar a) (a -> next)

это абсолютно тоже самое

kana
27.03.2018
13:24:16
data STMF next = forall a. NewTVar a (TVar a -> next) | forall a. WriteTVar (TVar a) a next | forall a. ReadTVar (TVar a) (a -> next)

Alexander
27.03.2018
13:24:38
ну да, так более верно

kana
27.03.2018
13:24:43
или a сам форалится?

Alexander
27.03.2018
13:26:01
@kana_sama ты прав, нужно forall a + ExistentialQuantification писать

kana
27.03.2018
13:26:40
как запомнить ExistentialQuantification? пишу часто, но каждый раз ExistentionalQuantification

Alexander
27.03.2018
13:27:22
не знаю

kana
27.03.2018
13:27:26
так-то в принципе любой gadt можно заменить на adt

Alexander
27.03.2018
13:27:26
написать 39 раз

Google
Alexander
27.03.2018
13:27:31
нет

kana
27.03.2018
13:27:40
даже твой с ()

достаточно подключить семейства

чтобы ~ получить

Alexander
27.03.2018
13:27:59
data SImple a where Unit :: a -> Simple () Number :: a -> Simple Int

это уже и будет GADT

вид в профиль

kana
27.03.2018
13:28:26
тем не менее синтаксис будет адтовый так-то по моему с exist такая же ситуация

Alexander
27.03.2018
13:29:43
вообще GADT это как раз про возможность того, что конструкторы типа могут делать разные типы

тут они все возвращают один и тот же тип

Александр
27.03.2018
13:31:10
Я отредактировал, уж ладно.

Alexander
27.03.2018
13:32:06
ну это мелочи

я потому это здесь и пишу, а не там

вообще хабр смешной, вроде в послдених моих статьях было 0 комментариев

а когда я на поинте что-то по теме спросил, мне сказали почитай на хабре там кто-то статью по теме с каким-то адом написал..

Alister
27.03.2018
13:33:47
что-то на хабре слишком много трактор-стори стало последее время

Google
Александр
27.03.2018
13:34:01
в stm же никаких io, верно?
Да, иначе будет непонятно что при перезапуске транзакции

kana
27.03.2018
13:34:03
мне так однажды кинули ссылку на мою же статью про трансдьюсеры

я уже этот вопрос задавал на фбае похоже

kana
27.03.2018
13:34:45
в прошлом фрилансил на ней

Alexander
27.03.2018
13:34:48
ну конечно unsafePrimToPrim можно

kana
27.03.2018
13:34:51
но статья про жиес

Alexander
27.03.2018
13:35:25
unsafeIOToSTM тоже

но нужно понимать, что а. этот поток может быть прерван в любой момент

б. IO может быть вызвано 100500 раз

Dmitry
27.03.2018
13:44:53
Alister
27.03.2018
13:45:02
ага

Dmitry
27.03.2018
13:45:27
Да всегда ж так было.

kana
27.03.2018
13:45:33
@graninas ты бы условие задачи вставил

Dmitry
27.03.2018
13:45:36
Не помню обратного

kana
27.03.2018
13:45:48
а то я хз например что за философы, пойду гуглить

Dmitry
27.03.2018
13:46:09
Alister
27.03.2018
13:46:25
задача парикмахера тоже интересна

Dmitry
27.03.2018
13:46:28
@graninas А где в книге про фримонады? Вообще, где про это почитать внятно?

Google
Александр
27.03.2018
13:47:59
@graninas А где в книге про фримонады? Вообще, где про это почитать внятно?
Ну, 4-я глава А много материалов в сети. Для начала можно ознакомительную статью Гонзалеса почитать, сейчас ссылку найду

Dmitry
27.03.2018
13:48:10
Жду :)

Александр
27.03.2018
13:48:53
Жду :)
http://www.haskellforall.com/2012/06/you-could-have-invented-free-monads.html

@graninas ты бы условие задачи вставил
Так классическая ж задача... Но может и вставлю позже

А что никто не плюсует? Покритиковали, и все? Нет уж, извольте теперь жениться!

Alexander
27.03.2018
14:03:55
я плюсанул

и лайк в свитере поставил

Anatolii
27.03.2018
14:05:08
какие-то фри монады, а на FreeHashMap можно это сделать?

kana
27.03.2018
14:07:26
"К сожалению, я разбираюсь во внутренностях даже хаскельной библиотеки stm, не говоря уж о прочих экосистемах."

мне бы о таком сожалеть

@graninas

Александр
27.03.2018
14:08:44
какие-то фри монады, а на FreeHashMap можно это сделать?
Конечно. Только complexity неизвестно какая будет

Andrii
27.03.2018
14:09:04
а подскажите есть где то пример работы с gRPC на Haskell. пока только ети нашол https://github.com/awakesecurity/gRPC-haskell/tree/master/examples/ может статья какая то.

Александр
27.03.2018
14:09:12
Alexander
27.03.2018
14:09:31
@graninas "не" пропущено

kana
27.03.2018
14:09:43
или там опечатка, или знание о stm ломает твою жизнь

Alexander
27.03.2018
14:09:55
+

Александр
27.03.2018
14:11:54
Чорд, моя невнимательность. Исправил

kana
27.03.2018
14:14:08
@graninas ты, кстати, не думал о переходе на freer? Вот там действительно gadt описывается (а так же лучше перфоманс и не нужен инстанс функтора) мб у freer есть какие-то недостатки?

Александр
27.03.2018
14:15:12
Про недостатки не скажу, плоховато еще разобрался

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