← All posts tagged Haskell

max630

stackoverflow.com

Вот пример почему в языке должны быть исключения из коробки а не троллейбус из хлеба. Если б всё было как надо dsReify зафейлился бы с исключением что именно и где не нашлось, и его можно было бы прямо так и передать юзеру, или завернуть в своё если уж так приспичило. Но по-моему можно было бы и не заворачивать, тот явный фейл что там есть это отчаянная попытка сузить поиск проблемы хотя бы до пакета. А так вот: cannot find a type, и сиди дебажь что он там не смог найти.

И ведь если сейчас даже что-то там заимплементировать — всё равно код уже отравлен многочисленными ручными перебросами, и это не будет работать как должно.

max630

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

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

max630

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

max630

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

max630

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

max630

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