Стектрейсы функциональщины
К этому: http://jdevelop.livejournal.com/1969110.html
Вообще, в F# та же проблема. Когда функциональный язык сделан поверх не способствующей тому платформы, стеки вызовов превращаются в кромешный ад.
Причем, если при этом фигурирует ленивость - можно сразу вешаться, т.к. найти источник ошибки, не натыкав во все места принудительную активизацию всех ленивых величин, практически нереально (при работе с БД и утеканием итераторов из открытых запросв это еще обычно и ошибку вылечит).
Альтернатива, видимо - некая визуализация потоков данных и показ "откуда пришла эта хрень".
А еще нужно внутренности жабы и дотнета исключать из стек-трейса, заменяя "известную последовательность" вызовов одной строкой типа "кложурь долбится в интероп за полем".
Вообще, в F# та же проблема. Когда функциональный язык сделан поверх не способствующей тому платформы, стеки вызовов превращаются в кромешный ад.
Причем, если при этом фигурирует ленивость - можно сразу вешаться, т.к. найти источник ошибки, не натыкав во все места принудительную активизацию всех ленивых величин, практически нереально (при работе с БД и утеканием итераторов из открытых запросв это еще обычно и ошибку вылечит).
Альтернатива, видимо - некая визуализация потоков данных и показ "откуда пришла эта хрень".
А еще нужно внутренности жабы и дотнета исключать из стек-трейса, заменяя "известную последовательность" вызовов одной строкой типа "кложурь долбится в интероп за полем".
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
2.
> функциональный язык сделан поверх не способствующей тому платформы
> принудительную активизацию всех ленивых величин
Тут, как бы, вопрос будет независимо от платформы. Рекомендую на х-е покодить, будет ровно тот же опыт, если брать реальные задачи (хотя бы ту же работу с БД). Лентяйка, чо. Не связано с функциональностью языка программирования, связано именно с ленивостью.
3.
> при работе с БД и утеканием итераторов
iteratees для простой работы -- самое то. Даже для clojure применить можно.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
А порой, она весьма нетривиальная.
no subject
no subject
no subject
no subject
no subject
Но можно же и unsafePerformIO! ;-)
А что делают в чистом энергичном языке? Там это понятие не размыто?
no subject
no subject
no subject
Второе и третье - одно и то же, и я и сам не уверен, приносит ли ленивость на нынешнем уровне развития технологий в среднем больше вреда или пользы. С удовольствием покодил бы на языке типа Хаскелла, только без ленивости.
no subject
no subject
no subject
Рекомендую.
no subject