Dmitry
судя по тому, что в конце там то, что у всех в начале - дело нечисто
Dmitry
кто-то небось списки реверснуть забыл
Dmitry
но не объясняет размер
Dmitry
ну да, а в начале то, что у всех в конце
Dmitry
3.8 секунды
Dmitry
вероятно, дело в \r
Dmitry
вряд ли, конечно, это из-за них 2 секунды лишние нагулялись
Dmitry
в окамле как-то можно -O2
Dmitry
или он по жизни -O2 ?
Dmitry
@nightblues 👆
Dmitry
@nightblues проверяли бы выхлоп, перед тем, как скоростью записи в /dev/null меряться
A64m
я не помню, есть ли в 4.05 flambda по умолчанию, у меня 4.04 с эфлямбдой, там -O3 есть
Dmitry
какие опции указывать?
A64m
-tag 'optimize(3)'
A64m
вроде так
parket
Из любого функтора можно сделать Free монаду?
Dmitry
ocamlopt -O3 -unsafe ./ocaml.ml
Alexander
@banana_is вроде как да
Dmitry
но увы: 0m3.842s
Alexander
не вижу причин почему нет
A64m
но от эфлямбды тут толку не должно быть,наврное, это, как я понимаю, в основном дефункторизатор (но там еще по мелочи что-то)
Dmitry
@nightblues что поправить?
Dmitry
в любом случае надо список реверснуть
Alexander
структура data Free f a = Pure a | Free (f (Free f a)) существует для любого * -> *
Vadim
Alexander
Monad она есть f - Functor
Alexander
с теорией вроде тоже сходится
Dmitry
@nightblues ну я не знаю, где - но вывод перевернутый
A64m
А, тут же еще версию постили https://gist.github.com/zinid/1da345fcde47f5e6a799288f66ee3857
Vadim
Dmitry
dmz@zen ~/tmp/bsfuck/ocaml $ time ./a.out < ../49zGQ6Zt.txt > /dev/null
real 0m2.919s
user 0m2.920s
sys 0m0.000s
Dmitry
zinid.ml
A64m
не зря кто-то фортранизировал
Dmitry
@nightblues eb8d32c8d260d240b351dfadd42cb5e5
Alexander
лучше питона
Dmitry
@qnikst лучше идеоматичного хаскеля, что печально
Alexander
ну поправим вечером
Alexander
а идеоматического..
Dmitry
vstream лучше
A64m
ну там окамл не особо идиоматичный
A64m
даже в плюсовых версиях циклы повысокоуровневее выглядят
Denis
а идиоматичный окамл писали?
Vadim
Alexander
это про версию zinid
A64m
Anonymous
В SML идиматичное медленнее в 1.3 раза быстрейшего хаскелля на моей машине при записи в файл и в ~4 раза при скармливании | md5sum. Ну и проблемы с \r\n.
Dmitry
да там циклы в окамле!!
Vadim
так должно быть \r\n или \n?
Alexander
в выводе \n
Dmitry
\n
Alexander
на входе - не определено
Alexander
может быть или \r\n или \n
A64m
Anonymous
https://gist.github.com/Heimdell/6fc12bd32b8ff85f0c97d64e3897ebcc
Dmitry
ghc это история про то, как из дичайших начальных условий (чистота, ленивость) генерить какой-то вменяемый по скорости код несмотря ни на что
Dmitry
и про то, как заметать все грязные хаки и ад под ковёр
Dmitry
unsafePerform и все дела
Anonymous
ну хоть не unsafeDupablePerform, или как его там
Dmitry
это я даже не понимаю, но вроде в фастбилдере как раз оно
A64m
ну внутри байтстринга как раз unsafeDupablePerform
Alexander
dupable норм
Alexander
там unsafeInlineIO
Alexander
который unsafeActskldjflInlineIO
A64m
в байтстринге инлайнабл еще
Alexander
который им все single-тоновые байтостроки заалиасил однажды
A64m
этот баг, наверное второй по популярности после того, когда гхц файлы удалял
Alexander
вообще веселая история была
Alexander
если в них ошибка?
A64m
да
Alexander
жалко что пофиксили, нужно было оставить опцией —hardcore
Anonymous
Dupable - это когда кусок кода может быть выполнен 1.5 раза
Alexander
да
Alexander
там лок не создается как в обычном
Alexander
поэтому более чем 1 тред могут форсировать вычисление
Anonymous
И под 1.5 я буквально понимаю полтора - т.е., два треда возьмутся редусить 1 узел с IO внутри, и один отвалится безо всякого исключения посередине
Alexander
непонятное утверждение, если честно
A64m
куда он там отвалится? Он честно второе значение посчитает, которое потом ГЦ соберет. конец