LINUX.ORG.RU

trace в cmucl


0

0

Что-то у меня не получается разобраться с trace в cmucl. Точнее, не могу заставить его работать как надо.

Поясню на примере.

CL-USER> (defun fact (n)
   (if (= n 0)
       1
       (* n (fact (1- n)))))
FACT
CL-USER> (trace fact)
(FACT)
CL-USER> (fact 5)
  0: (FACT 5)
  0: FACT returned 120
120

Но хотелось бы, чтоб показывался каждый вызов функции, а не 1. Как, например, в clisp'е:

[1]> (defun fact (n)
   (if (= n 0)
       1
       (* n (fact (1- n)))))
FACT
[2]> (trace fact)
;; Трассировка функции FACT.
(FACT)
[3]> (fact 5)
1. Trace: (FACT '5)
2. Trace: (FACT '4)
3. Trace: (FACT '3)
4. Trace: (FACT '2)
5. Trace: (FACT '1)
6. Trace: (FACT '0)
6. Trace: FACT ==> 1
5. Trace: FACT ==> 1
4. Trace: FACT ==> 2
3. Trace: FACT ==> 6
2. Trace: FACT ==> 24
1. Trace: FACT ==> 120
120

В мануале по cmucl ничего путного не нашел. Пробовал менять спеки компилятора, режимы трассировки -- все бестолку.

Мда, действительно в clisp, sbcl, lispworks и allegro всё как надо, а в cmucl не работает...

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

> С тебя пиво, за то что сделал за тебя работу:)

Да без проблем, приезжай в Киев, напою ;)

> Это типа оптимизация.

Неотключаемая фича -- баг. После этого на кмукл теперь забью, даже несмотря на то, что в slime он лучше всего поддерживается. Там еще нельзя русские символы использовать. Фтопку. Тем более, sbcl ненамного хуже + активней развивается

nsav
() автор топика
Ответ на: комментарий от nsav

Всмысле не пашет? у меня работает... Мне как-то почти без разницы что cmucl что sbcl, разве что в дебаггере у cmucla поприятнее вывод. Ну ещё по мелочи...

CrazyPit ★★★
()
Ответ на: комментарий от nsav

Кстати глюк с русским это глюк slime, но судя по ченджлогам вроде пофиксили недавно, но я как-не проверял - не нужно пока.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

Не знаю, даже без слайма русский просто не воспринимается даже ридером. :(

nsav vatutin:~ [2153%1]% cmucl
; Loading #P"/home/nsav/init.lisp".
CMU Common Lisp CVS 19b 19b-release-20050628-3 + minimal debian patches (19B), running on vatutin
With core: /usr/lib/cmucl/lisp.core
Dumped on: Fri, 2005-08-05 14:35:45+03:00 on vatutin
For support see http://www.cons.org/cmucl/support.html Send bug reports to the debian BTS.
or to pvaneynd@debian.org
type (help) for help, (quit) to exit, and (demo) to see the demos

Loaded subsystems:
    Python 1.1, target Intel x86
    CLOS based on Gerd's PCL 2004/04/14 03:32:47
* 'фыва

Reader error on #<Two-Way Stream, Input = #<Synonym Stream to SYSTEM:*STDIN*>, Output = #<Synonym Stream to SYSTEM:*STDOUT*>>:
Undefined read-macro character #\ф
   [Condition of type READER-ERROR]

Restarts:
  0: [ABORT] Return to Top-Level.

Debug  (type H for help)

(LISP::%READER-ERROR
 #<Two-Way Stream, Input = #<Synonym Stream to SYSTEM:*STDIN*>, Output = #<Synonym Stream to SYSTEM:*STDOUT*>>
 "Undefined read-macro character ~S"
 #\ф)
Source:
; File: target:code/reader.lisp
(ERROR 'READER-ERROR :STREAM STREAM :FORMAT-CONTROL ...)
0]

В sbcl все путем. 

nsav
() автор топика
Ответ на: комментарий от CrazyPit

Ну в лиспе между строками и символами есть довольно тесная связь, которую иногда удобно использовать. Например, написать что-то вроде (format t "Все бабы ~a~%" 'стервы) ;)

nsav
() автор топика
Ответ на: комментарий от nsav

Иногда(а точнее прямо сейчас) эта связь добивает. Парюсь с clsql если в mysql'ной БД столбец типа text, clsql почему-то читает его как символ а не как строку.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

Так в чем проблема? (format nil "~a" что-те-надо) и все в ажуре. Если так уж припекло, то напиши макрос и не парься. :)

nsav
() автор топика
Ответ на: комментарий от nsav

Да там фишка в том, что он читает скорее всего read-ом и выдаёт (name db-row) уже скажем FUCKING вместо "Fucking name bla bla bla". Толи глюк, то-ли где настроить надо, сейчас ищу только что-то не пока не нашёл.

CrazyPit ★★★
()
Ответ на: комментарий от CrazyPit

Блин вот что бывает, когда привык что программы обычно не такие умные. Оказывается этот clsql не кэшировал запрос из БД, даже после того как я пересоздал таблицу, и выдавал мне мой объекты с первого запроса.

CrazyPit ★★★
()
Ответ на: комментарий от anonymous

В именах символов можно использовать любые символы (сорри за каламбур). Почитай в практикал коммон лиспе, там эта тема хорошо раскрыта

nsav
() автор топика
Ответ на: комментарий от nsav

Можно то можно, но не так, как ты это сделал. 'блядищща это будет именно что БЛЯДИЩЩА.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.