2011-07-26 8 views
12

Rozumiem, że ponad tysiąc wbudowanych reguł przepisywania w programie Mathematica domyślnie wypełnia tabelę reguł globalnych. Czy istnieje sposób, aby zmusić Mathematica do podania pełnej lub nawet częściowej listy tych zasad?Jak można uzyskać listę wbudowanych globalnych reguł przepisywania programu Mathematica?

+0

Masz na myśli jak Opcje? Aby zobaczyć wszystkie opcje dla notebooka, możesz wykonać 'Opcje [Notatnik]', a otrzymasz wszystkie opcje dotyczące notatnika. Możesz to zrobić z dowolnym obiektem. Czy to masz na myśli przez przepisanie reguł? – jmlopez

Odpowiedz

11

Najlepszym sposobem jest uzyskanie pracy pod numerem Wolfram Research.

W przeciwnym razie myślę, że w przypadku niezupełnie wkompilowanych w jądro można odzyskać większość reguł/definicji. Spójrz na

Attributes[fn] 

gdzie fn jest polecenie, które Cię interesują. Jeśli zwróci

{Protected, ReadProtected} 

potem coś można przyjrzeć się (choć często jest to tylko MakeBoxes (formatowanie) definicja lub definicja typu AutoLoad/Stub). Aby zobaczyć, co się tam dzieje, należy często uruchamiać przykład polecenia, aby załadować go, jeśli był to kod pośredniczący. Będziesz musiał także oderwać się od poleceń skierowanych do użytkowników do implementacji zaplecza. Ostatecznie najprawdopodobniej dojdziesz do podstawowego polecenia, które jest wkompilowane w jądro, którego nie możesz zobaczyć.

Poprzednio wspomniałem o tym w tips for creating Graph diagrams i otrzymałem wzmiankę o numerze What is in your Mathematica tool bag?.

Dobry przykład, z ładnym małym i strawnym kawałkiem kodu to Experimental`AngularSlider[] wymienione w Circular/Angular slider. Zostawię to, żebyś spojrzał na wyprodukowany kod.

Inny przykład to coś takiego jak BoxWhiskerChart, w którym należy wywołać go raz, aby załadować cały kod. Następnie widzisz, że BoxWhiskerChart przechodzi do wywoływania Charting`iBoxWhiskerChart, które musisz usunąć, aby spojrzeć na, itp ...

+2

Należy wspomnieć, że większość naprawdę interesujących reguł (rzeczy, które reprezentują informacje dotyczące praw własności), z których znany jest program Mathematica, takich jak reguły integracji i podsumowania, nie są dostępne. – Simon

+1

W ten sposób można uzyskać źródło niektórych wbudowanych elementów, ale kod generowany jest zwykle jako nieczytelny bałagan (głównie ze względu na poprzedzone konteksty i brak wcięć). Czego zwykle używasz, aby uczynić go bardziej czytelnym? – Szabolcs

+1

@Szabolcs: Dodawanie kontekstów do '$ ContextPath' pomaga pierwszy problem. Następnie skopiowanie kodu do nowej komórki wejściowej pomaga nieco w drugim problemie. – Simon

Powiązane problemy