(Я уверен, что на этом, должно быть, уже был дан ответ на этом сайте, но поиск наводнен концепцией вызова free() для переменной в C.)Что такое «свободная переменная»?
Я натолкнулся на термин «сокращение эта», который был определен как f x = M x ==> M
, если x «не является свободным в M». Я имею в виду, я думаю, что я понимаю суть того, что он пытается сказать, похоже, что вы делаете, когда вы конвертируете функцию в бесшумный стиль, но я не знаю, что означает, что спецификатор о x не свободен.
Незначительный nitpick: это может быть хорошо для 'x', если оно связано. Eta-reduce '(\ x -> (\ x -> x + x) x)' to '(\ x -> x + x)' отлично, даже если '(\ x -> x + x)' содержит два использования 'x'. Это угловой случай, который не проявится в работе с человеко-письменным кодом, но я думаю, что компиляторы будут чаще сталкиваться с этим. – yatima2975
Я немного испортил формулировку. «Но только если' x' не используется (т. Е. Не является бесплатным) »должно быть« Но только если 'x' не является бесплатным (т. Е. Не используется или является аргументом)». Я изначально написал это так, но изменил его другим способом, чтобы сделать его более простым. К сожалению, это изменило смысл :) – porges