Cheese
Misha
кабал сейчас уже вроде все умеет (ну кроме бесполезной установки ghc)
пробую с кабалом 2.2, вроде все сравнительно гладко, но получается вот такая херня
Could not find module ‘Control.Concurrent.Async’
Perhaps you haven't installed the profiling libraries for package ‘async-2.1.1.1’?
в ответ на
cabal clean && cabal configure --enable-profiling && cabal bench --benchmark-options="+RTS -N -p -RTS"
Misha
причем зависимостей полно, но не нравится ему именно stm и async
Alexander
так не установлены же профилировочные версии зависимостей?
Alexander
cabal install —dependencies-only —enable-profiling, если без new
A64m
не надо использовать без new
Alexander
+
Misha
окей, попробую
A64m
а если уж нью использовать, то 2.4 собрать
Misha
ну блин
а без new- что будет не так?
A64m
все
Misha
ну и кроме того, делать типа библиотеку и писать в readme что-то типа you need to install the latest cabal to build this - это немного это самое
A64m
технически, все можно билдить кабалом-без-нью
A64m
но на практике вам не захочется этого делать
A64m
кабал с нью недоделанный и активно допиливается, так что лучше пользоваться наименее недоделанной версией
Cheese
наименее недоделанный кабал — это стэк
Alexander
да ну, он все портит и не бибикает даже
Cheese
A64m
но с тех пор стек уже не тот
Alexander
о, у меня на nixos стек на 1.16 запинен
Alexander
т.к. 1.17 просто не работает
Misha
Misha
https://cabal.readthedocs.io/en/latest/ ?
A64m
сейчас нью кабал > стек > кабал, но нью все еще недоделанный, правда это понятие растяжимое, для кого-то уже и доделанный вполне
Dmitrii
а где почитать про эти new- команды?
Можно официальную документацию почитать (но на самом деле команды те же, просто надо добавить префикс new-). Но если хочется начать работать с простыми проектами, то я писал блог пост про workflow с кабалом:
* https://kowainik.github.io/posts/2018-06-21-haskell-build-tools.html
A64m
они не те же
A64m
некоторые не нужны, некоторые как инстол делают не то что в старом
A64m
да вообще весь уи другой
Dmitrii
они не те же
Я имел в виду названия те же. Согласен, что можно было поточней написать. Есть команды, которые без new (например, upload)
A64m
похож разве что на допесочечный кабал, да и то не сильно из-за другой роли configure и т.д.
Misha
A64m
до 17 стек можно было для начинающих смело рекомендовать, хотя нью кабал уже был получше. но последнее время там какое-то адище с хпаком, постоянно ошибки, отставание от гхц (даже 8.2 еще поддерживается не полностью), проблемы на виндовс и т.д.
Anonymous
@victorynox будет жить. Поприветствуем!
Kirill
Victor
Ребзя, (не судите строго, я новичок) такой вопрос, это я туплю, или на данный момент нет нормального визуально отладчика для Haskell ?
(Там с брейкпоинтами и пошаговым выполнением)
З.Ы. Про ghci знаю, но консоль не совсем то...
Andrew
Cheese
Andrei
навскидку из свежего есть https://github.com/ndmitchell/debug
Oleg
https://github.com/phoityne/haskell-debug-adapter
Oleg
Но я тоже не знаю, зачем.
Cheese
Алексей
Отлаживай привычно принтом
Oleg
import Debug.Trace
Алексей
Ту да
Victor
A64m
гхци отладчиком вполне можно пользоваться (если есть возможность загрузить в гхци, конечно)
Alexander
Alexander
главное что не работает
Cheese
я вот в двумерные стэктрэйсы хаскельного профилировщика до сих пор полностью не въехал. хотя почти всегда удаётся найти причину по ним
Victor
Понял, будем разбирать тогда новые трюки) спасибо
Cheese
отладить быстро-грязно — Debug.Trace
Alexander
а если с си взаимодействие то и gdb
Cheese
но чаще мне исправить ошибку помогает разбиение сложной функции на более мелкие и написание property тестов для них всех
Ю ли я? 🤔
В древнем Leksah была вроде бы неплохая интеграция с ghci-шным отладчиком, мне как-то даже помогала.
Alexander
с Haskell?
Oleg
Догадываюсь, что при отладке рантайм-ошибок пошаговая отладка будет менять порядок эвалюэйшона и может привести к гейзенбагам
Alexander
я знаю мало человек которые могут нормально с gdb отловить проблемы
Cheese
Alexander
которые не на границе с си
Alexander
угу
Alexander
отладчик в ghci тот ещё
Alexander
там пишется _
Oleg
А зафорсить нельзя?
Alexander
и есть :sprint который писать будет с санками
Alexander
можно
Cheese
А зафорсить нельзя?
вот так и получится квантовый отладка (когда наблюдение влияет на процесс)
Alexander
коллапс лямбда-функции!
Cheese
хотя от изменения порядка вычисления не должно ничего меняться, кроме потребления памяти
Алексей
Cheese
Упасть может, если посчитать что-то не то
если оно всё равно вычисляется в программе, то всё равно упадёт, неважно, когда. а если в программе есть задумка, которая никогда не должна вычисляться, это что-то странное (хотя я такое использовал разок)