SORU
19 EKİM 2008, Pazar


Araçlar C fonksiyonel programlama için ne var?

Son zamanlarda C fonksiyonel programlama yapıyor hakkında gitmek nasıl düşünüyordum (değilC ). Açıkçası, C prosedürel bir dildir ve gerçekten fonksiyonel programlama desteği yok doğal olarak.

Herhangi bir derleyici dil için fonksiyonel programlama bazı yapıları eklemek dil uzantıları/var mı? GCC dil bir uzantısı olarak nested functions sağlar; iç içe geçmiş fonksiyonları erişim değişkenleri üst çerçeve yığını olabilir, ama bu hala uzun bir yol olgun kilitler uzak.

Örneğin, bir şey bence olabilir gerçekten yararlı C olan herhangi bir işlev işaretçisi beklenen, mümkün geçirmek için bir lambda ifadesi oluşturma kapatma çürükleri içine bir işlev işaretçisi. C 0 x lambda ifadeleri harika olduğunu düşünüyorum) dahil oluyor; ancak, araçlar C. doğrudan uygulanabilir arıyorum

[Değiştir] açıklık, değilim çözmeye çalışıyorum belirli bir sorun C de olabilir daha uygun bir yer için fonksiyonel programlama; ben sadece merak ne araçlar var eğer yapmak istediğim.

CEVAP
31 Temmuz 2010, CUMARTESİ


Gds'ler, iç içe geçmiş fonksiyonları lambda ifadeleri, aslında simüle etmek için kullanabilirsiniz, benim için bunu yapmak için bir makro var:

#define lambda(return_type, function_body) \
  ({ \
    return_type __fn__ function_body \
    __fn__; \
  })

Bu gibi kullanın:

int (*max)(int, int) = lambda (int, (int x, int y) { return x > y ? x : y; });

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hanksranger

    hanksranger

    6 EKİM 2009
  • jagadambarecords

    jagadambarec

    13 AĞUSTOS 2008
  • Matthew Morrill

    Matthew Morr

    15 EKİM 2011