znaleźć wolne zmienne w wyrażeniu lambda

Czy ktoś wie, jak mogę obliczyć wolne zmienne w wyrażeniu lambda? Wolne zmienne to zmienne, które nie są częścią parametrów lambda.

Moja obecna metoda (która prowadzi mnie nigdzie) polega po prostu na używaniu samochodu i cdr, aby przejść przez wyrażenie. Moim głównym problemem jest ustalenie, czy wartość jest zmienną, czy też jest jednym z prymitywów schematu. Czy istnieje sposób na sprawdzenie, czy coś ocenia jedną z wbudowanych funkcji schematu? Na przykład:

<code>(is-scheme-primitive? 'and)
;Value: #t
</code>

Używam schematu MIT.

questionAnswers(2)

yourAnswerToTheQuestion