← All posts tagged Haskell

Загадка #2896973 решена. Раньше у меня была 32битная система, а теперь 64. То есть гхц оперирует длинными интами, а в сишке по-прежнему int, то есть 32битные. Я попробовал там поменять на long — стало в 2 раза медленнее, то есть разница уже ближе к той что раньше.

Непонятно что делать с хаскелом. Ставить весь гхц 32битный я не пробовал, я даже не уверен как это сделать в 64битной системе. Менять тип с Int на Int32 не помогло.

что-то проебались полимеры по сравнению с #1628193 — в ghc-8.0.2 самый быстрый вариант раз в 5 медленнее чем сишка. Интересно, это си так улучшилось или гхц ухудшилось? Даже не знаю как проверить, всё уже другое.

кстати, вот вы про переполнение буфер говорите, а fromIntegral проверяет лимиты-то? вот у меня есть код который длину возвращает unsigned long, а allocaBytesAligned хочет Int. Я пишу fromIntegral и всё, дырища?

а что, если в .cabal у меня test-suite секция, то там точно надо перечислять всё-всё то же самые пакеты и модули которые в основном коде? как-нибудь указать что "то же что и в library" нельзя?

кстати по поводу #2857402 Вы думаете, язык вас подводит когда приходится использовать макросы. На самом деле он вас подводит, когда типы выводятся неправильно, но вы об этом на этапе компиляции не узнаёте.

github.com ну всё, пропал хаскель

PS, кстати, а нельзя ли "runtime representation of this is 3 heap objects" пофиксить просто объёвлением STRef как что-нибудь типа "data STRef s a = STRef {-# UNPACK #-} !(MutVar# s a)", зачем там боксинг вообще?