Меня немного смущает термин «закрытие», используемый в документации Groovy . Согласно документации, их определение закрытия больше похоже на анонимную функцию или лямбду.
Я понимаю, что языки, поддерживающие функции первого класса, обычно позволяют формировать укупорочные средства. Однако существует различие между этими двумя концепциями.
Например, согласно документации Groovy:
Замыкание в Groovy является анонимным фрагмент кода, который может принимать аргументы, вернуть значение, указать и использовать переменные, объявленные в его окружении область.
На языке функциональных языков такой анонимный блок кода может называться анонимным лямбда-выражением в целом или лямбда-выражением с несвязанными переменными или закрытым лямбда-выражением, если он не содержит ссылок на несвязанные переменные (например, порог в предыдущем примере). Groovy не делает такого различия.
Затем, согласно странице Википедии , посвященной замыканиям:
Термин закрытие часто ошибочно используется для обозначения анонимной функции.
Что мне не хватает?