2009-06-05 2 views
2

Die ipython Python-Shell hat eine wunderbare Funktion, wobei Sie eingeben können:aufzublicken den Text einer Prozedur in Schema

foo ??

und siehe den Text der Funktion foo.

Hat Schema (insbesondere MIT-Schema), etwas ähnliches?

Ich möchte in der Lage sein zu sagen,

(define (foo x) (* x x))

und später Ansicht (oder sogar operieren) die Liste (* x x).

Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

Nicht standardmäßig in jedem Schema, das ich kenne. Was Sie tun können, ist ein Makro zu definieren, das tut was "definieren" tut und zusätzlich den Hauptteil der Funktion in einer Hash-Tabelle oder einem Alist oder was auch immer speichert. Das funktioniert natürlich nur mit dem Code, den du kontrollierst.

+0

mm, ich dachte darüber nach etwas zu tun ... toll, danke! – billc

0

Es gibt keine zuverlässige, tragbare Möglichkeit, dies zu tun.

0

Die allgemeine Struktur einer Scheme-Funktion ist (define (<name> <arg1> <arg2> ...) <expr1> <expr2> ... <exprn>). Wenn Sie den Vorschlag von Mark Probst erweitern, können Sie ein Makro definieren, das eine zitierte Version der Funktion definiert, die Sie dann auf cddr anwenden können, um eine Liste der Ausdrücke der Funktion zu erhalten.