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.