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
да ну, он все портит и не бибикает даже
Dmitrii
кабал с нью недоделанный и активно допиливается, так что лучше пользоваться наименее недоделанной версией
Я пользуюсь cabal с new- командами уже больше полугода и особых проблем не заметил. Были минорные неудобности, но сейчас вообще отлично. Местами даже лучше stack
A64m
наименее недоделанный кабал — это стэк
где-то зимой с 15 на 16 года это так и было
A64m
но с тех пор стек уже не тот
Alexander
о, у меня на nixos стек на 1.16 запинен
Alexander
т.к. 1.17 просто не работает
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 и т.д.
A64m
до 17 стек можно было для начинающих смело рекомендовать, хотя нью кабал уже был получше. но последнее время там какое-то адище с хпаком, постоянно ошибки, отставание от гхц (даже 8.2 еще поддерживается не полностью), проблемы на виндовс и т.д.
Anonymous
@victorynox будет жить. Поприветствуем!
Kirill
Victor
Ребзя, (не судите строго, я новичок) такой вопрос, это я туплю, или на данный момент нет нормального визуально отладчика для Haskell ? (Там с брейкпоинтами и пошаговым выполнением) З.Ы. Про ghci знаю, но консоль не совсем то...
Misha
cabal install —dependencies-only —enable-profiling, если без new
вот кстати не помогло! очень интересно stm и async не профилируются типа
Andrei
навскидку из свежего есть https://github.com/ndmitchell/debug
Oleg
https://github.com/phoityne/haskell-debug-adapter
Oleg
Но я тоже не знаю, зачем.
Алексей ayaye :)
а какую проблему вам надо решить?
привычным (по императивным языкам) способом разобраться, почему оно работает не так, как задумано :)
Алексей
Отлаживай привычно принтом
Oleg
import Debug.Trace
Алексей
Ту да
A64m
гхци отладчиком вполне можно пользоваться (если есть возможность загрузить в гхци, конечно)
Cheese
Вот именно в точку)
в новой парадигме не помешает изучить новые трюки
Алексей ayaye :)
в новой парадигме не помешает изучить новые трюки
да. у меня зависимость от отладчика ощутимо снизилась
Alexander
ты про 1.7.1 может?
да, но не важно
Alexander
главное что не работает
Cheese
я вот в двумерные стэктрэйсы хаскельного профилировщика до сих пор полностью не въехал. хотя почти всегда удаётся найти причину по ним
Victor
Понял, будем разбирать тогда новые трюки) спасибо
Cheese
отладить быстро-грязно — Debug.Trace
Alexander
а если с си взаимодействие то и gdb
Cheese
но чаще мне исправить ошибку помогает разбиение сложной функции на более мелкие и написание property тестов для них всех
Ю ли я? 🤔
В древнем Leksah была вроде бы неплохая интеграция с ghci-шным отладчиком, мне как-то даже помогала.
Victor
а если с си взаимодействие то и gdb
Ну, с gdb проще всего как раз)) Тут скорее что бы код сам не пачкать с Debug.Trace, а быстро отладчиком пройти
Alexander
с Haskell?
Oleg
Догадываюсь, что при отладке рантайм-ошибок пошаговая отладка будет менять порядок эвалюэйшона и может привести к гейзенбагам
Alexander
я знаю мало человек которые могут нормально с gdb отловить проблемы
Alexander
которые не на границе с си
Alexander
угу
Alexander
отладчик в ghci тот ещё
Oleg
скорее, пошаговое выполнение будет выглядеть как хаотическое
Ну я имею в виду отображение ещё не вычисленнных параметров
Alexander
там пишется _
Oleg
А зафорсить нельзя?
Alexander
и есть :sprint который писать будет с санками
Alexander
можно
Cheese
А зафорсить нельзя?
вот так и получится квантовый отладка (когда наблюдение влияет на процесс)
Alexander
коллапс лямбда-функции!
Cheese
хотя от изменения порядка вычисления не должно ничего меняться, кроме потребления памяти
Алексей ayaye :)
Догадываюсь, что при отладке рантайм-ошибок пошаговая отладка будет менять порядок эвалюэйшона и может привести к гейзенбагам
пошаговость не должна. вот наблюдение значений теоретически может. хотя, если отладчик позволяет только наблюдать вычисленное, а не вычислять новое
Ilya
вот так и получится квантовый отладка (когда наблюдение влияет на процесс)
это не квантовая отладка как раз, меняться должен не (только) процесс, а конечный результат
Cheese
Упасть может, если посчитать что-то не то
если оно всё равно вычисляется в программе, то всё равно упадёт, неважно, когда. а если в программе есть задумка, которая никогда не должна вычисляться, это что-то странное (хотя я такое использовал разок)