對不起,如果下面的討論可能看起來有點模糊,但有太多的話要說。
我只有Lisp的理論知識,而不是動手。另一方面,Forth可能(但正常的Forth還沒有)在語言內部完成一個元編程。但元編程是可行的,但沒有一致的語法。我認爲Lisp也是如此。
我已經實現了一個非常乾淨的解決方案,在Forth的一個小范例中包含這種可能性,就像語言一樣。爲了進行元編程,我們應該能夠參考我們寫的內容。因此,當我們編寫一個程序來進行的immediatelly執行:
bread eat
我們應該能夠太指同一短語的意圖,而不是執行它,保持它供以後參考。這可以寫成例如
{ bread eat }
上面的短語可能會導致將創建的對象留在堆棧上。但是,由於我們創建了一個新詞,如{
和}
,我們也有權參考這一點。
所以,我們可以想提及:
{ bread
我們怎麼能指的是什麼?暫定語法是:{{ { bread }}
。
如果我們給的名字XXX
以前的短語,我們可以寫初始短語:
XXX eat }
及以上的應了那句在離開堆棧中的
{ bread eat }
由於上正常工作我不知道我說的究竟是什麼,你只是想說一下,通過上面的推理和它們在Forth內部的實現,每個單詞都有一個執行級別,並且定義了單詞元編程的級別。
顯然,我們有第一個無窮級別和每個連續級別。所以執行級別是基於數學無窮大的。
我已經在一種Forth和第一級(波紋管無限)內實現了上述內容,一切正常。因此,例如能夠在上午改變的語法:
{ bread eat } { tomatos eat } x 3 = if
到:
{ bread eat | tomatos eat } x 3 = if
即通過定義進行|
爲} {
波紋管:
{{ } { }} "|" define
,或者如果你喜歡它更好,因爲:
2{ } { 2} "|" define
上面的方法在語言中使用了正確的語言語言,並使其成爲語言。
在我看來
所以,無論是Lisp和各方面都元編程的可能性,但都缺乏這種可能性作爲語言的集成部分。
我對napl.wikispaces.com有更多的細節。
這比以前的版本,[Lisp和第四的宏\ [暫停\](http://stackoverflow.com/q/24272856/1281433),這是很好的更爲具體。當然,現在*這個問題已經重新打開了投票,而且這個投票結果很接近,所以對於哪些問題應該保持開放存在一些混淆。在這個問題中你要找的東西要清楚得多,但是它仍然可能是主題,因爲[「比較問題不適合\ [Stack Overflow \],因爲沒有可以發佈到的答案的界限它們。「](http://meta.stackoverflow.com/q/251328/1281433)。 –
關閉原因**過於寬泛**適用於此處:「有太多可能的答案*,或者對於此格式,答案太好。」這根本不是一個**不好的問題;它不適合堆棧溢出。例如,這個問題在comp.lang.lisp中可能很好。 –
這個特定的問題,「你能用前者做些什麼,後者不能做什麼,反之亦然?」可能是這裏最具體的。它仍然可能會承認太多的答案,但是如果有一件事可以做到,另一件做不到,那麼可能會給出一個相對規範的答案。 –