Регистрация | Войти
Lisp — программируемый язык программирования
RSS
(дубль) Не могу разобраться со странной ошибкой
LiteTabs - 13.01.2010 02:08, Сообщений - 12
Имею я вполне рабочий код
http://lisper.ru/apps/format/69
то есть он был успешна запущен и не вываливал ошибок. но его повторный запуск не удался. Ошибки валятся и в slime и просто из sbcl.
Ругаются на скобки. Но все скобки расставлены логично и по потребности. Подсветка скобок показывает, что в самом конце есть лишние закрывающие, хотя они ни разу не лишние.
 Может кто встречался с подобной проблемой и успешно ее одолевал?
[#]
Да система просто в шоке от размера выражения и настоятельно требует разбить его на много маленьких гы :))
archimag - 13.01.2010 11:33
[#]
Боясь показаться капитаном очевидность могу лишь порекомендовать привести код в удобочитаемый вид, разделить на тцать блоков и т.п. Тогда, глядишь, и баги станут более легкоотлавлемаемыми. А так, имхо, если в этой мешанине автор не разбирается, то не автор и подавно не сможет разобраться.
marsijanin - 13.01.2010 11:37
[#]
arhimag, только что пришел к такому же выводу ибо ни slime тут не виноват ни sbcl.
Даже в gedit скобка не подсвечивается ж(
И как тут разбить, хз. Но что странно - один раз скомпилилось же!
LiteTabs - 13.01.2010 11:48
[#]
> Но что странно - один раз скомпилилось же!

Как это было? Например, часто некоторые вещи можно выполнить через M-C-x в SLIME, но при этом в файле нарушены скобки и загрузить файл не получится.

P.S. Я бы такие вещи вообще грузил бы из ресурсов.
archimag - 13.01.2010 11:52
[#]
Черт! Уже устал бороться. Код урезал на половину, а скобки так и достают. Запустить удалось только код из гита. Но там он староват :(
LiteTabs - 13.01.2010 13:15
[#]
Скажите, по какому принципу разбивать такой код?
На более мелкие функции?
LispUser - 13.01.2010 14:15
[#]
>  Запустить удалось только код из гита.

Что за код?

> Скажите, по какому принципу разбивать такой код?
> На более мелкие функции?

Можно попробовать и так, для разумного ответа надо понимать задачу.
archimag - 13.01.2010 14:32
[#]
Это код который я закоммитил на github дня 4 назад. Он немного староват. А как разбивать код графического интерфейса на куски я слабо представляю. Он вроде весь в let-ui должен помещаться.
LiteTabs - 13.01.2010 14:57
[#]
let-ui это обычный блок, можно вынести в функции. вместо виджета в let-ui можно подставить вызов функции

например, вместо

(gtk:button :stock "gtk-print")

можно написать

(:expr (func))

а уж func должна вернуть кнопку.
andy128k - 14.01.2010 00:15
[#]
Т.е. замена избыточного текста дополнительным вызовом функции?
Или я пока еще не понял, это макрос?
LispUser - 14.01.2010 14:41
[#]
Да. Заменить, к примеру пару десятков (g-signal-connect ...) на какую-либо функцию. Только не уверен что заработает. 
LiteTabs - 14.01.2010 23:20
[#]
Посмотрите, как сделана обработка нажатия клавиш в emacs.
Все работает достаточно быстро.
LispUser - 15.01.2010 14:25
@2009-2010 lisper.ru