
Ilya
01.10.2018
22:21:15
Applicative хватит
но м.б. можно шире

Denis
01.10.2018
22:22:08
я тут zip делаю через zipCata :D
все что нужно, это только алгебры менять для разных adt

Google

Denis
01.10.2018
22:24:06
но конечно надо выразить базовый функтор
кстати если поднять на уровень женериков, то можно получить что-то типа zip/unzip for free

Dmitry
02.10.2018
01:58:03

Imants
02.10.2018
05:49:48
Утро вроде брезжит, не?
Бывает позднее утро?

Yurii
02.10.2018
06:06:34

Dmitry
02.10.2018
06:06:49
Это у обычных людей, которые на Go програмитруют

Yuriy
02.10.2018
06:25:00
обычные люди не программируют

Alexander
02.10.2018
06:43:02
сегодня к вечеру отвечу на комментарии и внесу часть изменений

Dmitry
02.10.2018
06:47:34

Alexander
02.10.2018
07:25:39
вообще это как раз тот кусок, который мне все равно изобретать если либу использовать буду
мне интересно несколько вещей, можно ли придумать интерфейс который будет хорошо специализироваться для per-capability буфферов

Google

Alexander
02.10.2018
07:27:33
но видимо это плохая идея до тех пор пока нельзя временно пиннить тред к капабилити

Kirill
02.10.2018
08:14:11
а как это "временно"? на время логанья чтоль?

Alexander
02.10.2018
08:45:05
ага
типа:
pinned $ do
x <- getBuffer
writeLogToBuffer x msg
кметт такое предлагал сделать
поидее это 1 бит в инфе о процессе менять
без такой фичи поведения можно добиться, только если логирование не аллоцирует ничего и работает только с # объектами
@A64m_qb0 ICFP сломалось
https://www.youtube.com/channel/UCwRL68qZFfub1Ep1EScfmBw
видео выложили

Andrei
02.10.2018
08:54:41
и воркшопы тоже?

A64m
02.10.2018
08:55:22
нет конечно

Andrei
02.10.2018
08:55:39
олсо https://www.youtube.com/playlist?list=PLnqUlCo055hVknu7QAW_RUZRmRZWXmnvv православнее

A64m
02.10.2018
08:56:25
@A64m_qb0 ICFP сломалось
да все нормально, видео с прошлого icfp вообще было сразу (только не разрезанное), в этот раз я не нашел где стримы можно не в прямом эфире смотреть
а вот остальное только три месяца назад закончили выкладывать

Leonid
02.10.2018
09:05:47
со звуком беда какая-то

Alexander
02.10.2018
09:10:18
ещё и звук вам

A64m
02.10.2018
09:18:42
но для многих докладов хоть пейпер есть, весело когда с какого-нибудь hiw выкладывают видео где полностью неразличимый хуррбурр и еще постоянно камера перефокусируется, так что и слайдов не видно

Dmitry
02.10.2018
10:04:59
а бенч там про парсинг, да, это мимо
Открыл issue на добавление бенча про форматтинг:
* https://github.com/andrewthad/chronos/issues/22
Да, это именно та библиотека, которую я имел в виду! Видел твит, что там человек бенчи реализовывал. Печально, конечно, что там только парсинг. Мне пока ни разу не приходилось парсить время, бенчи для форматирования были бы более полезными...

Google

Denis
02.10.2018
10:09:38
какой профит от инлайнинга?

A64m
02.10.2018
10:13:07
весь профит от инлайнинга, пока не заинлайнишь - ничего как следует не оптимизируешь

Denis
02.10.2018
10:14:24
это же тупо встраивание кода в то место
короче какой-то копи-паст только на уровне компилятора

A64m
02.10.2018
10:18:20
так пока код не вставишь - ничего с ним не сделаешь
т.е. какое-то время можно попереставлять "непрозрачные" функции, но только какое-то время, дальше уже без прозрачности ничего не сделать

Denis
02.10.2018
10:19:23
это какой-то лямбда лифтинг?

A64m
02.10.2018
10:19:47
да вообще все оптимизации

Denis
02.10.2018
10:20:42
тоесть, если просадка в перформансе, то тыкай инлайн где попало и будет ок?

A64m
02.10.2018
10:21:31
не все так просто, конечно

Denis
02.10.2018
10:22:43
ну по большей степени так?

Terminator
02.10.2018
10:22:46
@nishirken будет жить. Поприветствуем!

A64m
02.10.2018
10:22:51
в хаскеле же правила перезаписи, т.е. переставлением функций можно добиться больше чем обычно

Denis
02.10.2018
10:23:10
ну реврайтинг тоже ок для оптимизаций

A64m
02.10.2018
10:23:39
т.е. некоторые вещи нельзя инлайнить раньше времени, чтоб было за что правилам зацепится
но INLINE в общем-то на это и заточен
но не INLINEABLE

Denis
02.10.2018
10:24:20
а в чем разница между ними?

A64m
02.10.2018
10:26:07
и есть еще менее благоприятный способ для правил - экспоз олл анфолдингс или как там он называется
а в чем разница между ними?
компилятор особо не старается заинлайнить инлайнабл функцию, чтоб правилам были доступны внутренности для обработки правилами, но внутренности сохраняются для обработки правилами, как и в случае инлайн функций
правда, можно по мемту применения решить чтоб инлайнабл работал как инлайн для данного конкретного применения функции, есть "магическая" функция inline

Google

Denis
02.10.2018
10:33:51
чот пока не въехал во всю эту магию

A64m
02.10.2018
10:36:03
ну есть некое пространство решений
мы можем сохранить разверку в неизменном виде, чтоб правила могли работать с внутренностями функции, но оптимизировать мы будем потом n по месту применения
можем сначала оптимизировать одни внутренности, а потом сохранить в HI для дальнейшего использования, оптимизировать придется меньше, но правилам зацепиться не за что
можем не сохранять развертки
дакже отдельно мы можем принимать решения инлайнить по месту определения или по обстоятельствам по месту применения
в хаскеле нет способа проаннотировать это все так ясно и поотдельности
есть набор каких-то мутных прагм которые называются примерно одинаково, ключей и автоматики у которой свои эвристики когда и что делать
в смысле не принимать решение инлайнить по месту определения, а принимать решение по месту определения, будем ли инлайнить на месте применения

Alexander
02.10.2018
10:43:12

Denis
02.10.2018
10:43:43

Alexander
02.10.2018
10:43:44
что-то в хроне не понравилось но на увроне байкшеддинга
первое говорит заинлайнь всегда
второе - сохрани развертку
третье сгенерируй специализацию и сохрани
для первого есть модификаторы когда оно срабатывает

Denis
02.10.2018
10:45:16

A64m
02.10.2018
10:45:29
лучше бы они inlinable назвали specializable

Alexander
02.10.2018
10:45:33
но я не знаю ни одного живого человека который умеет этим пользоваться и объяснить
это как?
есть полиморфная функция, ты ее инстанциируешь конкретным типом и сохраняешь полученный обьект
тогда если в другом модуле компилятор встретит такую же специализацию он возьмёт готовый код

Denis
02.10.2018
10:46:22
просто вчера у Кметта была ошибка, и он сделал инлайн и ошибка еще более специфицировалась

Alexander
02.10.2018
10:46:52
ошибка компилятора или в программе?

Google

Alexander
02.10.2018
10:47:02
inline на тайпчеккер не влияет никак

A64m
02.10.2018
10:58:15
ну, можно написать такие правила перезаписи, что будет влиять

Alexander
02.10.2018
10:59:07
inline или правила?
и.е. если заинлайнилось то правило перепишет во что-то другого типа?
{-# RULES "foo inlined" foo = bogus #-}
?

A64m
02.10.2018
11:01:00
можно же делать так чтоб получался нетайпчекающийся код если правило не сработало
это описанная техника, обычно так правда не делают

Alexander
02.10.2018
11:01:05
тогда если foo не заинлайнено, то ошибка будет?
похоже на то, что выше?
только нужно сделать чтобы стреляло только на 0

A64m
02.10.2018
11:01:30
вроде того, да
также обсуждается еще один способ сделать так чтоб что-то без инлайна не тайпчекалось
СПЖ в некоторых обсуждениях левити-полиморфизма предлагает использовать существующий механизм специализации для того чтоб генерить несколько версий кода левити полиморфного объявления

Alexander
02.10.2018
11:23:59
и Лин типы туда же

Oleg
02.10.2018
11:55:02

A64m
02.10.2018
12:09:23
к тому же, по умолчнанию выводятся лифтед типы, т.е. пользователю такой фичи придется писать страшные сигнатуры, которые он будет писать пока они ему нужны
т.е. куча функций левити полиморфными не станут просто потому что программисту наплевать какие они там будут