Encuentra variables libres en la expresión lambda

¿Alguien sabe cómo puedo averiguar las variables libres en una expresión lambda? Las variables libres son las variables que no forman parte de los parámetros lambda.

Mi método actual (que no me lleva a ninguna parte) es simplemente usar car y cdr para pasar por la expresión. Mi principal problema es averiguar si un valor es una variable o si es una de las primitivas del esquema. ¿Hay alguna forma de probar si algo se evalúa en una de las funciones integradas del esquema? Por ejemplo:

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

Estoy usando el esquema MIT.

Respuestas a la pregunta(2)

Su respuesta a la pregunta