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