@dpwiz Почему? Восклицательные знаки гораздо гораздо чаще ставить нужно, чем тильды, а результаты забытия восклицательного знака обнаружить и устранить гораздо труднее, в то время как отстрел ног почти всегда виден сразу. @ru@rf
@dpwiz Они нужны всегда когда у тебя нетривиальный data flow, особенно на больших объёмах данных: без них у тебя быстро начинают накапливаться лишние санки во всяких смешных местах и забивать тебе оперативу. @ru@rf
@L29Ah@ru@rf Скорее всего причина в другом (примитивы неправильные, рулы не отработали, инлайнер провафлил и подобное). Ковровый стрикт это симптоматическое лечение и только натягивает пружину граблей которые тебя в будещем ёбнут когда стрикта перестанет хватать.
@dpwiz Ладно, давай конкретно: вот этот модуль становится на 38% тормознее если убрать восклицательные знаки из кода (не убирая из data (который вообще просто охуителен)): https://github.com/l29ah/hyborg/blob/master/Chunker/BuzHash.hs Проверять так, например: cabal run benchmark -- 'chunkify/default settings 1MB' @ru@rf
@L29Ah@ru@rf Тут уже много карго-бангов. Если тебе вообще лень вникать и читать корку, то можно на один конкретный модуль влепить стрикт. Но по дефолту совать его в каждый новый проект это дурь.
@dpwiz Интерпретирую как: если не хочешь ебаться с чтением корок и сосать с производительностью по кд, ставь везде Strict: примеры где он помогает легкодоступны, примеры где он всё неожиданным образом всирает отсутствуют, даже Strict-хейтер согласен что он спасает от лишней возни. @ru@rf
@dpwiz Интерпретирую как: если не хочешь ебаться с чтением корок и сосать с производительностью по кд, ставь везде Strict: примеры где он помогает легкодоступны, примеры где он всё неожиданным образом всирает отсутствуют, даже Strict-хейтер согласен что он спасает от лишней возни.
@ru @rf