2017-07-25 64 views
0

我想了解一個函數如何在Lisp中工作,我很早以前就用過Allegro Cl,我記得它在REPL中有一個特殊的功能,可以讓你看到如何函數一步一步地工作,就像在Matlab中一樣。例如,如果你有這樣的功能:Allegro CL,調試功能一步一步

(+ 1 
    (* 2 3 
     (/ 6 2) 
    ) 
) 

你可以看到每一個功能一步一步,如:

(+ 1 
    (* 2 3 
     3) 
) 

然後:

(+ 1 
    18) 

最後:

19 

非常感謝提前。

+0

標準具有['STEP'](http://www.lispworks.com/documentation/HyperSpec/Body/m_step.htm)。 – jkiiski

+0

謝謝,這確實有效。 –

回答

1

由於jkiiski,

的代碼爲表示一步一步的功能將是:

(step (+ 1 (* 2 3 (/ 6 2)))) 

,這表明在非常詳細的Lisp如何分析所有的數據,並評估功能。

經過許多步驟它給出:

[STEP] CG-USER(2): 
    result 6: 2 
    6: (/ 6 2) 
[STEP] CG-USER(2): 
    result 5: 18 
    result 4: 18 
    result 3: 18 
result 2: 18 
2: (+ 1 18) 
[STEP] CG-USER(2): 
result 2: 19 
result 1: 19