metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-06-16 09:06 pm

Стектрейсы функциональщины

К этому: http://jdevelop.livejournal.com/1969110.html
Вообще, в F# та же проблема. Когда функциональный язык сделан поверх не способствующей тому платформы, стеки вызовов превращаются в кромешный ад.
Причем, если при этом фигурирует ленивость - можно сразу вешаться, т.к. найти источник ошибки, не натыкав во все места принудительную активизацию всех ленивых величин, практически нереально (при работе с БД и утеканием итераторов из открытых запросв это еще обычно и ошибку вылечит).
Альтернатива, видимо - некая визуализация потоков данных и показ "откуда пришла эта хрень".

А еще нужно внутренности жабы и дотнета исключать из стек-трейса, заменяя "известную последовательность" вызовов одной строкой типа "кложурь долбится в интероп за полем".

[identity profile] alexott.livejournal.com 2012-06-16 06:30 pm (UTC)(link)
ну вот так и отлаживаем :-) в кложуре есть проблема с тем, что часть кода ленивая и откуда пришла основная бага - не всегда понятно

[identity profile] blackyblack.livejournal.com 2012-06-16 06:37 pm (UTC)(link)
Надо в стектрейсы дописывать параметры для функции и комментарии к функциям. Тогда будет ничё так.

[identity profile] w00dy.livejournal.com 2012-06-16 06:46 pm (UTC)(link)
ребе, это ещё вменяемый стектрейс. А вот когда у вас там пачка inner exception с DynamicInvoke, вот это жопа полнейшая. Только понимае того что там творится спасает (особенно если это что-то самописное)

[identity profile] gds.livejournal.com 2012-06-16 07:06 pm (UTC)(link)
1. можно фильтровать всякое из внутренностей.

2.
> функциональный язык сделан поверх не способствующей тому платформы
> принудительную активизацию всех ленивых величин

Тут, как бы, вопрос будет независимо от платформы. Рекомендую на х-е покодить, будет ровно тот же опыт, если брать реальные задачи (хотя бы ту же работу с БД). Лентяйка, чо. Не связано с функциональностью языка программирования, связано именно с ленивостью.

3.
> при работе с БД и утеканием итераторов

iteratees для простой работы -- самое то. Даже для clojure применить можно.

[identity profile] nicka-startcev.livejournal.com 2012-06-16 07:15 pm (UTC)(link)
и на что только не идут люди, чтоб не делать нормальные логи..

[identity profile] antilamer.livejournal.com 2012-06-16 07:19 pm (UTC)(link)
Отладку ленивости можно чуть упростить - https://github.com/jkff/htrace/blob/master/Debug/HTrace.hs

[identity profile] zamotivator.livejournal.com 2012-06-17 01:07 am (UTC)(link)
По-моему во всём этом есть что-то глобально неправильное

[identity profile] freiksenet.livejournal.com 2012-06-17 04:59 pm (UTC)(link)
Это кстати проблема чисто кложури и Ф-шарпа, а не ФП в целом. В коммон лиспе одни из самых лучших стэк трейсов, с инспектором и возможностью в любом окне стека чтото переопределить и запустить с этого момента (это уже в слайм). С улучшением компилятора думаю всё будет ок.

[identity profile] thesz.livejournal.com 2012-06-17 07:30 pm (UTC)(link)
Если что, то стек трейсы в современном Хаскеле (ghc 7.4.1) вполне ничего себе так.