encontrar variáveis ​​livres na expressão lambda

Alguém sabe como eu posso descobrir as variáveis ​​livres em uma expressão lambda? Variáveis ​​livres são as variáveis ​​que não fazem parte dos parâmetros lambda.

Meu método atual (que está me levando a lugar nenhum) é simplesmente usar carro e cdr para passar pela expressão. Meu principal problema é descobrir se um valor é uma variável ou se é uma das primitivas do esquema. Existe uma maneira de testar se algo é avaliado em uma das funções internas do esquema? Por exemplo:

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

Eu estou usando o esquema MIT.

questionAnswers(2)

yourAnswerToTheQuestion