Как получить определение моей функции в схеме MIT?

В JavaScript я могу получить определение "исходного кода" функции, например:

​function alert_Hi() {
    alert("Hi");
}

alert(alert_Hi);

вернет именно то, что я набрал. http://jsfiddle.net/DuCqJ/

Как я могу сделать это в схеме MIT?

Я помню, что видел что-то, что возвращает #compound-procedure или что-то в этом роде, но мне действительно нужен "исходный код".


person Tina CG Hoehr    schedule 26.08.2012    source источник


Ответы (2)


Вы можете попробовать пп

(define (display-hi) (display "Hi"))
(pp display-hi) =>
(named-lambda (display-hi)
  (display "Hi"))

средства отладки MIT-Scheme

person Nick Russell    schedule 06.01.2013

JavaScript полностью интерпретируется, поэтому он содержит полные определения функций даже после того, как вы их определили. Схема на самом деле не полностью интерпретирована; он компилирует функции (и несколько других конструкций, я думаю) в нечитаемое представление и отбрасывает исходный код.

Вероятно, вы могли бы заставить его сохранять начальное текстовое представление функции во время выполнения, используя некоторые трюки с макросами, но я склонен полагать, что это принесет больше проблем, чем пользы.

Если вы не возражаете, я спрошу, зачем вам нужно текстовое представление определенной функции во время выполнения?

person Inaimathi    schedule 26.08.2012
comment
Потому что я ленивый и хочу сказать (display-function myFunction) вместо того, чтобы прокручивать редактор назад :P - person Tina CG Hoehr; 27.08.2012