
Alexander
19.09.2018
11:01:33
если дите приходит поразговаривать во время scrum то это может сбить сотрудников с толку

Dmitry
19.09.2018
11:22:13
в этом плане доставляют скринкасты сноймана

Yura
19.09.2018
12:03:27
да чо дети...
у меня во время scrum чуваки стены делали

Google

Yura
19.09.2018
12:03:57
обшивали OSB

Leonid
19.09.2018
14:53:37
https://www.tweag.io/posts/2018-09-12-asterius-ffi.html
@qnikst inline-wasm?

Alexander
19.09.2018
14:54:10
позже
пусть по человечески статик поинтеры использует сначала
ему вчера сказали, чтобы distributed-closure не переизобретал

Anton
19.09.2018
14:58:10
Воу, это если доделать сделает GHCJS deprecated

Alexander
19.09.2018
15:05:17
это займет время
но вообще есть шанс, там вроде ещё дочерта работы

Anton
19.09.2018
15:09:30
А TH как вообще планируется делать?

Alexander
19.09.2018
15:15:40
хз

A64m
19.09.2018
15:18:03
там и гц-то нет, какой тх
все еще думаю, что webghc раньше юзабельным будет
хотя может вебгхц-ный подход в принципе тупиковый и он так и будет бинари в сотни мегабайт делать

Google

Iva
19.09.2018
16:00:08
в чём проблема бинарника в сотни мб?

Pineapple
19.09.2018
16:00:36
Ну если этот бинарник часть веб странички....

Iva
19.09.2018
16:00:46
веб?

Pineapple
19.09.2018
16:02:51
wasm, это всё...

Anton
19.09.2018
16:59:29
Не, соти мб это никуда не годится, после оптимизации и ужимания GHCJS выдаёт 500кб

Andrey
19.09.2018
17:05:46
500 кб - это для хелло ворлда?

Anton
19.09.2018
17:07:11
Для проекта на 30к строк кода и 100+ модулей
ну и зависимостей штук 40-50

Евгений
19.09.2018
17:07:38
А сколько весит гхцжс, собранный собой?

Anton
19.09.2018
17:07:51
Я не пробовал
в теории достаточно собрать программу с hint пакетом и посмотреть

Евгений
19.09.2018
17:08:41
Ну я хочу гхц на телефоне

Anton
19.09.2018
17:09:01
Есть ещё ARM кросскомпиляция
Хм, нет, недостаточно, он посчитал себя dead code
и выпилил
надо ещё что-то поюзать там, репл например

Евгений
19.09.2018
17:13:01
Собери сам хгц как нодежс приложение

Anton
19.09.2018
17:16:12
С его мега обвесом для нескольких stage и booting это будет нелегко
Использование ghc-api даже показательнее для практики будет

A64m
19.09.2018
18:29:12

Google

Anton
19.09.2018
18:31:36
Он как минимум должен уметь линковать сам себя к бинарям

dark
19.09.2018
18:49:14
он сам себя не соберет
(настало время собирать гхцжс. ghcjs сам себя не соберет. зачем мне llvm? у меня нет времени, чтобы…)

Terminator
20.09.2018
00:05:12
@ViktorCai будет жить. Поприветствуем!
@satiataoff будет жить. Поприветствуем!

Iva
20.09.2018
09:29:23
Ребят, может ли кто - то просветить про mtl-style?

Alexander
20.09.2018
09:30:31
mtl style - это подход объединения моданических эффектов на основе интерфейсов.
В этом подходе вводится 1 тип, и говорится какие эффекты он в себе инкапсулирует.
т.е. у нас есть описание эффектов MonadReader, MonadWriter, MonadIO ...
и есть тип data M = и мы говорим через instance MonadReader M ... что он может содержать в себе эффект Reader
таким образом мы можем объединять эффекты, и описывать наши функции полиморфно по тому, в каком именно контексте они будут вызываться
т.е. напрмер:
foo :: (MonadReader e m, MonadState s m) => a -> m b
в этом случае foo может работать с любым m который реализует соотвествующие инстансы
в дополнение к этому существуют дополнительные возможности

Iva
20.09.2018
09:34:39
Ого, мощно, надо будет поробовать в скале попробовать

Alexander
20.09.2018
09:34:42
поскольку у нас есть трансформеры для которых есть инстансы MTL, то ReaderT e (StateT s m) имеют уже написанные инстансы MonadReader и MonadState

Iva
20.09.2018
09:34:51
может лучше или перформантнее стеков

Alexander
20.09.2018
09:35:07
но там есть ограничения, которые всех бесят и поэтому пытаются изобретать что-то другое
т.е. если не думать про кейс описанный выше, то mtl решает проблему автоматического лифтинга в трансформерах

Artem
20.09.2018
09:35:33
еее

Alexander
20.09.2018
09:35:41
(но с вводом функциональных зависимостей)

Artem
20.09.2018
09:36:27

Google

Alexander
20.09.2018
09:36:29
и можно сделать:
newtype M = M { runM :: StateT S (ReaderT R IO) a }
deriving (MonadState S, MonadReader R, MonadIO)
атоматом получив инстансов кучу
проблемы с mtl, т.к. у нас везде интерфесы, то оно будет тормозить без специализации
поэтому нужно сделать чтобы то, что нужно заинлайнилось и специлизировалось

Admin
ERROR: S client not available

Alexander
20.09.2018
09:37:43
(или забить то дого как на самом деле словишь performance problem)
в этом отношении чистые трансформеры лучше, тем, что там все известно и у симлификатора больше шансов сделать работу
есть layers и monad-classes Ромы
про них я хорошо не скажу, я не использовал их в реальной жизни
поскольку я склонен считать первый описанный кейс - основным
ну и эффекты, они тоже решают эту проблему
но лучше про них, скажем @graninas спросить, он их и прочий free(r) любит
или ещё кого
опять же эффекты в реальной жизни у меня не взлетели, в проекте где они использовались до нас пришлось их выпилить, т.к. они тормозили и не приносили пользы
а для всяких экспериментов и мелочей экосистема на тот момент была ужасна
типа популярного пакета, который можно было с -XSafe отправить в segfault за 1 минуту анализа кода
сейчас экосистема подрасширилась


Artem
20.09.2018
09:42:12

Alexander
20.09.2018
09:42:21
Algebraic Effects

Google

Alexander
20.09.2018
09:42:32
extensible-effects, freer и все это
там целая пачка либ, но нужно внимательно смотреть что ещё поддерживают
недавно в Haskell cafe был тред на эту тему
но в целом mtl (tagless) подход и free/effect (tagged) выражаются друг через друга
freer ближе к free, но tagless если мне не изменяет память
эти вещи потормознее, т.к. тащут интерпретатор эффектов с собой
но там наверняка есть место для исследований, как сделать это быстрее
зачем они могут быть нужны можно смотреть в статье олега про extensible-effects
он там показывает как некоторые юзкесы с mtl,tf выражаются излишне сложно в отличии от эффектов
как-то так


Dmitry
20.09.2018
10:30:04
Есть еще одно решение от @int_index для решения проблемы расширяемых эффектов (если я правильно понимаю): https://github.com/int-index/caps
Мы даже писали быструю маму для зависимых типов, чтобы caps работал получше и побыстрей: https://github.com/kowainik/typerep-map
Надеюсь, что Влад когда-нибудь опишет более подробно свое решение, я не использовал, но хотелось бы узнать сравнение с другими подходами...

Terminator
20.09.2018
11:07:00
Victor будет жить. Поприветствуем!

Victor
20.09.2018
11:07:24
Хай бледнолицые!
И сразу офтоп, может кто знает что с русскоязычным чатом о Rust случилось? Не могу его найти.