LINUX.ORG.RU

[haskell][common lisp]как отследить выполнение кода как в python?

 ,


0

1

Вот что я имею в виду:

def foo(x):
    bar(x)

def bar(x):
    baz(x)

def baz(x):
    debug()

def debug():
    import traceback
    print traceback.extract_stack()

foo(1)

запустим:

[('test.py', 14, '<module>', 'foo(1)'), 
('test.py', 2, 'foo', 'bar(x)'), 
('test.py', 5, 'bar', 'baz(x)'), 
('test.py', 8, 'baz', 'debug()'), 
('test.py', 12, 'debug', 'print traceback.extract_stack()')]

Возможно ли такое в Common Lisp или Haskell?
Спасибо.

Haskell

не знаю как насчёт лиспа, а вот какие ты в ленивом языке собираешься получать трейсбэки - непонятно

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

не знаю как насчёт лиспа, а вот какие ты в ленивом языке собираешься получать трейсбэки - непонятно

трейсбэки

так вот по какому слову надо было гуглить! спасибо, вопрос до времени снят!

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

Там надо промежуточные менять... Тогда уж можно и hood.

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

> а вот какие ты в ленивом языке собираешься получать трейсбэки - непонятно

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

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

в хаскеле это не столько вызовы функций сколько стэк of deconstruction to WHNF

nokachi
()
Ответ на: комментарий от quasimoto

Это в GHCi, в своём приложении можно использовать что-то вроде control-monad-exception, но в этом случае вычисления явно должны быть погружены в соответствующую монаду (EMT в этом пакете).

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