У меня есть немного понимания haskell, но я всегда не уверен, какие прагмы и оптимизации я должен использовать и где. Как
- Как и когда использовать
SPECIALIZE
прагму и то, что она имеет. - Где использовать
RULES
. Я слышал, что люди, принимающие какое-то правило, не стреляют? Как мы это проверяем? - Когда делать аргументы функции strict и когда это помогает? Я понимаю, что создание аргумента strict приведет к тому, что аргументы будут оцениваться в нормальной форме, тогда почему я не должен добавлять строгость ко всем аргументам функции? Как мне решить?
- Как я вижу и проверяю, что у меня есть утечка пространства в моей программе? Каковы общие закономерности, которые представляют собой утечку пространства?
- Как я вижу, есть ли проблема со слишком ленивой? Я всегда могу проверить профилирование кучи, но я хочу знать, какова общая причина, примеры и шаблоны, где болит ленивость?
Есть ли какой-либо источник, который говорит о передовых оптимизации (как на более высоких, так и на очень низких уровнях), особенно в отношении haskell?