Alexander
если он не новичек френдли
Alexander
@voidlizard ^ как-то так
Alexander
вообще хакатон это не самая эффективная форма написания кода
Alexander
но может быть достаточно интересной для подогревания интереса
Leonid 🦇
сомневаюсь что я смогу писать код в "походных условиях". без привычного кресла, стола и мониторов это сразу -50% к скилу
Alexander
а вот если ты пописал 3.5 строк кода, но узнал как писать другие 350, то дома бы допилил?
Leonid 🦇
у меня нет кабинета дома :(
Евгений
Везёт, мне дома проще работается, чем на работе
Евгений
Потому что нету кричащих и снующих туда-сюда админов
Leonid 🦇
у меня дома кричащие и снующие туда-сюда дети
Евгений
Ясн
Alexander
если дите приходит поразговаривать во время scrum то это может сбить сотрудников с толку
Dmitry
в этом плане доставляют скринкасты сноймана
Yura
да чо дети...
Yura
у меня во время scrum чуваки стены делали
Yura
обшивали OSB
Leonid 🦇
https://www.tweag.io/posts/2018-09-12-asterius-ffi.html
@qnikst inline-wasm?
Alexander
позже
Alexander
пусть по человечески статик поинтеры использует сначала
Alexander
ему вчера сказали, чтобы distributed-closure не переизобретал
NC
Воу, это если доделать сделает GHCJS deprecated
Alexander
это займет время
Alexander
но вообще есть шанс, там вроде ещё дочерта работы
NC
А TH как вообще планируется делать?
Alexander
хз
A64m
там и гц-то нет, какой тх
A64m
все еще думаю, что webghc раньше юзабельным будет
A64m
хотя может вебгхц-ный подход в принципе тупиковый и он так и будет бинари в сотни мегабайт делать
Апач
в чём проблема бинарника в сотни мб?
Алексей
Ну если этот бинарник часть веб странички....
Апач
веб?
Алексей
wasm, это всё...
NC
Не, соти мб это никуда не годится, после оптимизации и ужимания GHCJS выдаёт 500кб
Andrey
500 кб - это для хелло ворлда?
NC
Для проекта на 30к строк кода и 100+ модулей
NC
ну и зависимостей штук 40-50
Евгений
А сколько весит гхцжс, собранный собой?
NC
Я не пробовал
NC
в теории достаточно собрать программу с hint пакетом и посмотреть
Евгений
Ну я хочу гхц на телефоне
NC
Есть ещё ARM кросскомпиляция
NC
Хм, нет, недостаточно, он посчитал себя dead code
NC
и выпилил
NC
надо ещё что-то поюзать там, репл например
Евгений
Собери сам хгц как нодежс приложение
NC
С его мега обвесом для нескольких stage и booting это будет нелегко
NC
Использование ghc-api даже показательнее для практики будет
A64m
NC
Он как минимум должен уметь линковать сам себя к бинарям
Dårk
он сам себя не соберет
(настало время собирать гхцжс. ghcjs сам себя не соберет. зачем мне llvm? у меня нет времени, чтобы…)
Anonymous
@ViktorCai будет жить. Поприветствуем!
Anonymous
@satiataoff будет жить. Поприветствуем!
Апач
Ребят, может ли кто - то просветить про mtl-style?
Alexander
mtl style - это подход объединения моданических эффектов на основе интерфейсов.
В этом подходе вводится 1 тип, и говорится какие эффекты он в себе инкапсулирует.
Alexander
т.е. у нас есть описание эффектов MonadReader, MonadWriter, MonadIO ...
Alexander
и есть тип data M = и мы говорим через instance MonadReader M ... что он может содержать в себе эффект Reader
Alexander
таким образом мы можем объединять эффекты, и описывать наши функции полиморфно по тому, в каком именно контексте они будут вызываться
Alexander
т.е. напрмер:
foo :: (MonadReader e m, MonadState s m) => a -> m b
Alexander
в этом случае foo может работать с любым m который реализует соотвествующие инстансы
Alexander
в дополнение к этому существуют дополнительные возможности
Апач
Ого, мощно, надо будет поробовать в скале попробовать
Alexander
поскольку у нас есть трансформеры для которых есть инстансы MTL, то ReaderT e (StateT s m) имеют уже написанные инстансы MonadReader и MonadState
Апач
может лучше или перформантнее стеков
Alexander
но там есть ограничения, которые всех бесят и поэтому пытаются изобретать что-то другое
Alexander
т.е. если не думать про кейс описанный выше, то mtl решает проблему автоматического лифтинга в трансформерах
Λrtem
еее
Alexander
(но с вводом функциональных зависимостей)
Λrtem
Alexander
и можно сделать:
newtype M = M { runM :: StateT S (ReaderT R IO) a }
deriving (MonadState S, MonadReader R, MonadIO)
Alexander
атоматом получив инстансов кучу
Alexander
проблемы с mtl, т.к. у нас везде интерфесы, то оно будет тормозить без специализации
Alexander
поэтому нужно сделать чтобы то, что нужно заинлайнилось и специлизировалось
Alexander
(или забить то дого как на самом деле словишь performance problem)
Alexander
в этом отношении чистые трансформеры лучше, тем, что там все известно и у симлификатора больше шансов сделать работу
Alexander
есть layers и monad-classes Ромы
Alexander
про них я хорошо не скажу, я не использовал их в реальной жизни
Alexander
поскольку я склонен считать первый описанный кейс - основным
Alexander
ну и эффекты, они тоже решают эту проблему
Alexander
но лучше про них, скажем @graninas спросить, он их и прочий free(r) любит