Jaka jest dokładna definicja zamknięcia?
Przeczytałem poprzednie tematy dotyczące zamknięć na stackflow i innych źródłach, a jedna rzecz wciąż mnie myli. Z tego, co udało mi się połączyć technicznie, zamknięcie jest po prostu zbiorem danych zawierających kod funkcji i wartośćzmienne powiązane w tej funkcji.
Innymi słowy technicznie następująca funkcja C powinna być zamknięciem mojego zrozumienia:
int count()
{
static int x = 0;
return x++;
}
Jednak wszystko, co czytam, wydaje się sugerować, że zamknięcia muszą w jakiś sposób obejmować przekazywanie funkcji jako obiektów pierwszej klasy. Ponadto zwykle wydaje się, że zamknięcie nie jest częścią programowania proceduralnego. Czy jest to przypadek nadmiernie związany z rozwiązaniem problemu, czy też nie rozumiem dokładnej definicji?