
A64m
17.08.2018
18:09:00
первоклассные модули быстро компилируются, другое дело что они тормозят

Евгений
17.08.2018
18:17:03
Ты хочешь их разруливать в рантайме?

A64m
17.08.2018
18:17:35
ну они в такой же степени в рантайме как тайпклассы к примеру

Alexander
18.08.2018
09:26:55
леннартовые вайлдкарды это record wildcards?

Google

Alexander
18.08.2018
09:27:07
и вообще что про это почитать?

A64m
18.08.2018
09:44:42
про это - это про что?

Alexander
18.08.2018
09:50:50
модули рекорды и все все все

Dmitry
18.08.2018
10:06:05
@A64m_qb0, присоединяюсь к ^

A64m
18.08.2018
10:35:00
как обзор по модулям, вводную часть дрееровского диссера http://people.mpi-sws.org/~dreyer/thesis/main.pdf
потом всякие новинки
f-ing https://people.mpi-sws.org/~rossberg/f-ing/f-ing-jfp.pdf
и 1ML https://people.mpi-sws.org/~rossberg/papers/Rossberg%20-%201ML%20--%20Core%20and%20modules%20united%20[JFP%20Draft%202].pdf
mixml https://people.mpi-sws.org/~rossberg/mixml/mixml-toplas.pdf
сейчас насчет рекордов еще подумаю

Alexander
18.08.2018
10:50:01
пасиба

Евгений
18.08.2018
10:51:28
А есть ISWIM-наследники с нормальными рекордами вообще?
С модулями проще, пруф-оф-коцепт можно на примере штандард-млей увидеть

Google

Kakadu
18.08.2018
10:54:24
А что такое норм рекорды?

A64m
18.08.2018
11:01:52
есть имплементации с полиморфными рекордами. окамловские объекты - это полиморфные рекорды (со страшным синтаксисом зачем-то)
в hugs есть полиморфные рекорды
есть пурскрипт и урвеб
http://blog.ezyang.com/2012/04/how-urweb-records-work-and-what-it-might-mean-for-haskell/
насколько все это можно считать нормальным, это вопрос конечно
ну и есть куча библиотечных реализаций
полиморфные рекорды, в принципе, это пересекающаяся область с дататайп дженериками
так что с пруф оф концептами не хуже, чем с модулями, может и лучше, потому что новинки выше как раз не имплементированы в языках которыми можно более менее пользоваться

Евгений
18.08.2018
11:15:46
У mixml'я есть нерабочий прототип, насколько я знаю
https://github.com/rossberg/mixml?files=1

Terminator
18.08.2018
11:24:10
@upsilon будет жить. Поприветствуем!

Евгений
18.08.2018
11:24:52

A64m
18.08.2018
11:26:49
да

Евгений
18.08.2018
11:31:02
Насколько же хугс непривычный
Rec (x::a | r) is the type of a record with an xcomponent of type a. The row variablerrepresents the rest of the row; that is, it represents any other fields in the record apart from x. This syntax---for record type extension---was chosen to mirror the syntax that we have already seen in the examples above for record value extension.
The constraint r\x tells us that the type on the right of the => symbol is only valid if "r lacks x," that is, if r is a row that does not contain an x field. If you are already familiar with Haskell type classes, then you may like to think of \x as a kind of class constraint, written with postfix syntax, whose instances are precisely the rows without an x field.
Никто не пробовал пруф-оф-концепт такого в гхц сделать?

milana
18.08.2018
12:23:56
можно нубский холиварный вопрос? Stack или Haskell Platform?

Timofey
18.08.2018
12:26:53
Стак
Я даже не уверен, что вопрос достоин холивара

Alexander
18.08.2018
12:28:53
стак говно полное и хуже кабала

Google

Alexander
18.08.2018
12:28:59
но использовать его, наверное
UX там пока более человечный и его больше людей умеют

Index
18.08.2018
12:30:48
Haskell Platform это вообще странное что-то

Alexander
18.08.2018
12:31:01
для винды норм было

A64m
18.08.2018
12:31:13
не было

Index
18.08.2018
12:31:24
Рекомендую ставить GHC nix-ом и cabal из исхдников

Alexander
18.08.2018
12:31:29
да ну, все запускалось почеловечески
сравнительно
стек тоже норм стал, но сейчас вроде mingw2 там не обновляют?
nix под виндой печален

A64m
18.08.2018
12:32:07
платформа на винде не могла даже нетворк сбилдить

Index
18.08.2018
12:32:29

Index
18.08.2018
12:32:36
Я под NixOS

Alexander
18.08.2018
12:32:51
ну я года 4 назад использовал, было норм HaskellR собирало
и проекты с ним

Index
18.08.2018
12:33:11
Надо по-другому было сказать
GHC системным пакетным менеджером, cabal из исходников

A64m
18.08.2018
12:33:14
на винде нормально работал сноймано-митчелловский инсталлятор minghc и стек какое-то время, сейчас уже как повезет

Alexander
18.08.2018
12:34:28
со стеком в среднем проще с людьми общаться

A64m
18.08.2018
12:35:16
> GHC системным пакетным менеджером
работающий совет для никсос и генты только, нет?
в остальных случаях с оговорками уже

Google

Alexander
18.08.2018
12:36:02
ну никс можно в любом дистре поставить

A64m
18.08.2018
12:36:34
ну я про то что это не системным пакетным менеджером

Alexander
18.08.2018
12:37:47
это да
а то можно в Арч попасть ненароком
или убунту без ppa

A64m
18.08.2018
12:46:06
году в прошлом можно было спокойно начинающим стек рекомендовать, сейчас не все так однозначно уже
и не потому что появилось что-то лучше для начинающих

Alexander
18.08.2018
12:46:51
в кабал-инстале прикольные фичи

Admin
ERROR: S client not available

Alexander
18.08.2018
12:47:19
надо ещё сделать wrapper убирающий new, и по stack.yaml генерирующему проект
я правда не знаю что там с installом

A64m
18.08.2018
12:48:07
пока там все недоделано, два интерфейса к двум разным тулам в одном CLI и пока с ним ни один ленгвидж костыль не работает, начинающим я бы его рекомендовать не стал

Alexander
18.08.2018
12:48:50
вот ленгвидж костыли это да, я все забываю что ими люди пользуются
без них все обнозначнее

Yuriy
18.08.2018
13:04:23
что есть ленгвидж костыль?

A64m
18.08.2018
13:06:58
ghc-mod intero hie и т.д.
на самом деле ghci сам ленгвидж костыль, правда не особо хороший в смысле фич, с ним и ньюбилд будет работать, но это вроде не мейнстрим интегрирования ленгвиджкостыля с редактором

Victor
18.08.2018
13:36:27

A64m
18.08.2018
13:37:56
жаль, что я не начинающий, столько хороших советов ото всех!

Victor
18.08.2018
13:37:57

Google

Yura
18.08.2018
14:01:41
Hi folks

Dmitry
18.08.2018
14:03:20

Yura
18.08.2018
14:03:22
не подскажете либу где реализованы примитивы типа forever, но с конечным числом повторов и экспоненциально раструщим временем повтора

Alexander
18.08.2018
14:03:48

Yura
18.08.2018
14:05:03
danke schön

Vyacheslav
18.08.2018
14:14:42
привет
подскажите как правильно огранизовать работу с эксепшенами в таком коде
botLoop :: LogIO m => ConduitChannel -> BrainCells -> m ()
botLoop chan cells = do
(event, pushback) <- liftIO $ readChan chan
liftIO $ async (do response <- processRequest cells event
writeChan pushback response)
botLoop chan cells
грубо говоря есть такая вот рекурсия, где я жду какого-нибудь сообщения из канала, затем тут же стартуя новый async, передаю туда данные из канала и снова жду сообщения из канала
хочется чтобы эксепшены форвардились из этих тредов в основной

Yura
18.08.2018
14:17:12
async будет форвардить только если будет wait

Vyacheslav
18.08.2018
14:17:41
это я понимаю
но я не очень понимаю, как сделать wait, чтобы ничего не блокировать

Yura
18.08.2018
14:18:43
бери forkFinally и для Left делай throwTo e myThreadId

Yuriy
18.08.2018
14:23:28
увеличения таймаутов нет ни в одном из них
но вообще это называется circuit breaker

Yura
18.08.2018
14:37:02
ну retry умеет exponentialBackoff
вроде
в любом случае - спасибо :)