2011-07-26 57 views
12

我明白,Mathematica中的一千個內置重寫規則默認填充全局規則表。有沒有辦法讓Mathematica提供這些規則的全部或部分列表?如何獲得Mathematica內置的全局重寫規則列表?

+0

您的意思是像選項一樣嗎?要查看筆記本的所有選項,您可以執行「選項[筆記本]」,它將爲您提供筆記本電腦的所有選項。你可以用任何對象來做到這一點。這是你重寫規則的意思嗎? – jmlopez

回答

11

最好的方法是在Wolfram Research找工作。

如果失敗了,我認爲對於沒有完全編譯到內核中的東西,您可以恢復大部分規則/定義。看看

Attributes[fn] 

其中fn是你感興趣的命令。如果返回

{Protected, ReadProtected} 

然後有什麼東西你可以看看(雖然往往只是一個MakeBoxes(格式化)定義或AutoLoad /存根類型定義)。要看看有什麼有運行

Unprotect[fn]; 
ClearAttributes[fn, ReadProtected]; 
??fn 

很多時候你必須運行該命令的例子來加載它,如果它是一個存根。您還必須從面向用戶的命令到後端實現中進行挖掘。 最終,您很可能會到達一個編譯到內核中的核心命令,您無法看到其詳細信息。

我之前在tips for creating Graph diagrams中提到過這個,它在What is in your Mathematica tool bag?中有提及。

一個很好的例子,有一個很好的一口大小和可消化的代碼位0123.0中提到的Experimental`AngularSlider[]。我會留給你看看生成的代碼。

另一個例子是BoxWhiskerChart,你需要調用它來加載所有的代碼。然後,您看到BoxWhiskerChart繼續撥打Charting`iBoxWhiskerChart,您必須取消保護以查看等等。

+2

我應該提到,Mathematica所熟知的大部分真正有趣的規則(代表專有信息的東西),例如集成和求和規則,都是不可訪問的。 – Simon

+1

以這種方式獲取某些內置函數的源代碼是可能的,但輸出的代碼通常是不可讀的混亂(主要是由於前置上下文和缺少縮進)。你通常使用什麼來使其更具可讀性? – Szabolcs

+1

@Szabolcs:將上下文添加到「$ ContextPath」中有助於解決第一個問題。然後將代碼複製到一個新的輸入單元有助於第二個問題。 – Simon