Gần đây tôi đã suy nghĩ rất nhiều về cách thực hiện lập trình chức năng trong C ( không phải C ++). Rõ ràng, C là một ngôn ngữ thủ tục và không thực sự hỗ trợ lập trình chức năng nguyên bản.
Có bất kỳ phần mở rộng trình biên dịch / ngôn ngữ nào thêm một số cấu trúc lập trình chức năng vào ngôn ngữ không? GCC cung cấp các hàm lồng nhau như một phần mở rộng ngôn ngữ; các hàm lồng nhau có thể truy cập các biến từ khung ngăn xếp cha, nhưng đây vẫn là một khoảng cách xa so với các bao đóng trưởng thành.
Ví dụ, một điều mà tôi nghĩ có thể thực sự hữu ích trong C là bất cứ nơi nào có con trỏ hàm được mong đợi, bạn có thể truyền biểu thức lambda, tạo một bao đóng để phân rã thành con trỏ hàm. C ++ 0x sẽ bao gồm các biểu thức lambda (mà tôi nghĩ là tuyệt vời); tuy nhiên, tôi đang tìm kiếm các công cụ áp dụng cho C.
[Chỉnh sửa] Để làm rõ, tôi không cố gắng giải quyết một vấn đề cụ thể trong C sẽ phù hợp hơn với lập trình chức năng; Tôi chỉ tò mò về những công cụ hiện có nếu tôi muốn làm như vậy.