Как определить подсистему в схеме? - PullRequest
2 голосов
/ 18 августа 2011

Я просто взломал Scheme (mit-схема), и я только что понял, как вы меняете среду, так что «+» становится символом для эквивалентной процедуры оператора «-».

Пример

(environment-define user-initial-environment '+ -)
(eval (+ 3 2) user-initial-environment)
=> 1

Мне просто интересно, существует ли простой способ работать со средами как с переменными, поэтому, когда я вводю среду в eval, вот так

(eval <exp> user-initial-environment) 

Мне не нужно использовать 'user-initial-environment'. Так что я могу «играть» с различными средами для функции.

(eval <exp> env) 

Где env - это некоторая предопределенная среда, присоединенная к моей переменной 'env'.

1 Ответ

3 голосов
/ 18 августа 2011

Соответствующая страница документации схемы MIT на средах верхнего уровня может быть поучительной - вы можете либо расширить существующую среду верхнего уровня (с помощью extend-top-level-environment), либо создать новую с нуля (с помощью make-top-level-environment).

Для оценки чего угодно, кроме самых тривиальных выражений, может быть полезно расширить либо system-global-environment, либо user-initial-environment (ср. 13.2: переменные окружения )

...