4

我注意到當我在REPL中鍵入一個運算符時,它經常被擴展爲一個與輸入/輸出歷史有關的值。CLISP的REPL中有什麼神奇變量?

具體而言,我注意到:

  • +++ ...擴展到先前的輸入,
  • *** ...擴展到先前的輸出,
  • -擴大到當前輸入

顯然有更多(/擴展到某些東西b我沒有完全弄明白)。

我試過瀏覽clisp文檔,但沒有成功。

我的問題:

  • 也沒有什麼魔法等REPL變量?他們在做什麼?
  • 有沒有辦法訪問第N個輸入或輸出(如IPython的InOut數組)?
+0

哇!我不知道IPython的「In」和「Out」陣列,謝謝! – sinan 2012-01-02 11:37:12

+0

它也有短'_','__' ...這意味着'Out [-1]','Out [-2]'等。 – Kos 2012-01-02 15:01:53

回答

3

正如在其他答案中提到的,這些變量記錄在ANSI Common Lisp標準中。

除此之外,Common Lisp實現可能具有許多其他功能。具有用戶界面的全功能頂級通常稱爲「Lisp偵聽器」。

CLISP實現在調試器中提供了其他命令。請參閱其文檔chapter 25

LispWorks在REPL中有一些擴展,並且還提供Listener。下面是一些例子:

互動數字2,在CL-USER包:

CL-USER 2 > (* 3 4) 
12 

相同,但我們可以忽略外括號:

CL-USER 3 > * 3 4 
12 

讓我們重做互動2:

CL-USER 4 > :redo 2 
(* 3 4) 
12 

讓我們重做交互2,但用除法代替乘法:

CL-USER 5 > :use/* 2 
(/ 3 4) 
3/4 

與像的命令,輸出歷史,或類似的特徵擴展其它實施方式是例如Allegro CL和Clozure CL。

SLIME提供基於GNU Emacs的Common Lisp開發環境,還提供了擴展的REPL

+0

這個答案也非常有用;謝謝! – Kos 2012-01-11 17:48:57

相關問題