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?

questionAnswers(8)

yourAnswerToTheQuestion