Ostatnio dużo myślałem o tym, jak zrobić programowanie funkcjonalne w C ( nie C ++). Oczywiście C jest językiem proceduralnym i nie obsługuje natywnie programowania funkcjonalnego.
Czy są jakieś rozszerzenia kompilatora / języka, które dodają pewne konstrukcje programowania funkcjonalnego do języka? GCC udostępnia zagnieżdżone funkcje jako rozszerzenie języka; funkcje zagnieżdżone mogą uzyskiwać dostęp do zmiennych z nadrzędnej ramki stosu, ale jest to wciąż daleko od dojrzałych zamknięć.
Na przykład jedna rzecz, która moim zdaniem może być naprawdę przydatna w C, to to, że wszędzie tam, gdzie oczekiwany jest wskaźnik funkcji, możesz być w stanie przekazać wyrażenie lambda, tworząc zamknięcie, które rozpada się na wskaźnik funkcji. C ++ 0x będzie zawierał wyrażenia lambda (które moim zdaniem są niesamowite); jednak szukam narzędzi, które można zastosować do prostego C.
[Edytuj] Aby wyjaśnić, nie próbuję rozwiązywać konkretnego problemu w C, który byłby bardziej odpowiedni dla programowania funkcjonalnego; Jestem po prostu ciekawy, jakie narzędzia są dostępne, gdybym chciał to zrobić.