(Estoy seguro de que ya debe haber sido respondido en este sitio, pero la búsqueda se inunda con el concepto de llamar a free() en una variable en C.)¿Qué es una "variable libre"?
Me encontré con el término "reducción eta" que se definió como f x = M x ==> M
si x no es "libre en M". Quiero decir, creo que entiendo la esencia de lo que está tratando de decir, parece lo que haces cuando conviertes una función en un estilo sin puntos, pero no sé qué significa el calificador sobre x no ser libre.
Minit nitpick: puede estar bien para 'x' para ser utilizado, si está atado. Eta-reduce '(\ x -> (\ x -> x + x) x)' a '(\ x -> x + x)' está perfectamente bien, aunque '(\ x -> x + x)' contiene dos usos de 'x'. Este es un caso de esquina que no mostrará mucho al tratar con código escrito por humanos, pero imagino que los compiladores se encontrarán con esto más a menudo. – yatima2975
Me equivoqué un poco en la redacción. "Pero solo si' x' no se usa (es decir, no es gratis) "debe ser" Pero solo si 'x' no es libre (es decir, no se usa o es un argumento)". Originalmente lo escribí de esa manera, pero lo cambié al revés para hacerlo más simple. Lamentablemente, eso cambió el significado :) – porges