Погодите, то есть Вы перечитываете все скрипты перед запуском или как?
Вас, как человека, не вылазящего из дебагера, наверное не должно удивить, что как только, при пошаговой отладке, дебагер дойдет до исполнения функции, сгенерированной данной библиотекой, он откроет код всего сгенерированного модуля в новой вкладке и выставит курсор ровно на строчке с этой самой функцией.
Хотите, я для Вас маленький скринкаст запишу раз уж Вы на слово не верите?
Без прописывания debugger никак. Но зачем Вам это? Я не потроллить, мне просто интересно.
По производительности — обычная рекурсия. Лупам, конечно, проигрывает, но как раз над этим я сейчас работаю.
Скажите, а чем принципиально в данном случае прекомпилированный код отличается от сгенерированного на лету? И неужели установить расширение для Coffee и затем прекомпилировать файл удобнее и легче чем просто подключить библиотеку (при том что она весит 11к не пожатая)?
...
var f_fact_local_0 = function(){
return 1;
};
var f_fact_local_1 = function(N){
debugger; //вот ваш дебаггер, все нужные переменные на месте
return N * f_fact(N - 1);
};
var f_fact = function(){
if(arguments[0] === 0 && arguments.length === 1){
return f_fact_local_0();
}
if(arguments.length === 1){
return f_fact_local_1(arguments[0]);
}
...
Весь код как на ладони.
2) Это ведь просто функция, у нее нет состояния, а значит ее результат выполнения зависит только от входных параметров, а значит ее очень легко покрыть тестами и ничего не надо дебажить.
Но спасибо за идею, дипишу в ридми про легкость отладки.
Вас, как человека, не вылазящего из дебагера, наверное не должно удивить, что как только, при пошаговой отладке, дебагер дойдет до исполнения функции, сгенерированной данной библиотекой, он откроет код всего сгенерированного модуля в новой вкладке и выставит курсор ровно на строчке с этой самой функцией.
Хотите, я для Вас маленький скринкаст запишу раз уж Вы на слово не верите?
Вас не затруднит показать мне в каком месте теряется доступ к замыканию и где функция создается неоднократно?
По производительности — обычная рекурсия. Лупам, конечно, проигрывает, но как раз над этим я сейчас работаю.
Конкретно в случае данной библиотеки — вы заблуждаетесь. И вот почему:
1) Вот пример (Вы уж простите за этот преславутый факториал, но он самый короткий и наглядный):
Сгенерированный библиотекой код:
Весь код как на ладони.
2) Это ведь просто функция, у нее нет состояния, а значит ее результат выполнения зависит только от входных параметров, а значит ее очень легко покрыть тестами и ничего не надо дебажить.
Но спасибо за идею, дипишу в ридми про легкость отладки.