В последнее время я много думал о том, как заниматься функциональным программированием на C (а не на С++). Очевидно, что C является процедурным языком и на самом деле не поддерживает функциональное программирование изначально.
Существуют ли какие-либо расширения для компилятора/языка, которые добавляют некоторые функциональные программирующие конструкции к языку? GCC предоставляет вложенные функции в качестве расширения языка; вложенные функции могут обращаться к переменным из родительского стека, но это еще далеко от зрелых закрытий.
Например, одна вещь, которая, по моему мнению, может быть действительно полезна в C, заключается в том, что везде, где ожидается указатель на функцию, вы можете передать лямбда-выражение, создавая закрытие, которое распадается на указатель функции. С++ 0x будет включать в себя лямбда-выражения (которые, как мне кажется, удивительны); однако, я ищу инструменты, применимые к прямой C.
[Edit] Чтобы уточнить, я не пытаюсь решить конкретную проблему в C, которая больше подходит для функционального программирования; Мне просто интересно, какие инструменты есть, если я захочу сделать это.