Έχουν δημοσιευτεί
Δευτέρα, 17 Αυγούστου 2009 5:02 μμ
από το μέλος
PALLADIN
Ο Bart de Smet έγραψε ένα πολύ καλο blog post για όσους θέλουν να πάρουν μια
μικρή γεύση από την ομορφιά και την δύναμη του λ-λογισμου.
To ενδιαφέρον στην προσπάθεια είναι ότι o Bart μας παρουσιάζει την untyped εκδοχή του λογισμού χρησιμοποιώντας το dynamic feautre της C# 4.0!!!
Διαβάζοντας το post είδα ότι λείπει ο Y combinator... οποτε ορίστε μια εκδοχή που σκέφτηκα...
Func<Func<dynamic, dynamic>, dynamic> fd = x => x;
dynamic Y = fd(f => fd(x => f(fd(y => x(x)(y))))(fd(x => f(fd(y => x(x)(y))))));
Y(fd(f => fd(x => f(x))))(42);
Remarks:
Επειδή ο compiler δεν με αφήνει να παω από lambda σε dynamic
dynamic f = x => x; // type error
Αντί να κάνω συνεχεια new Func<dynamic, dynamic>(x => x)(οπως γίνεται στο post), σκέφτηκα να χρησιμοποιήσω μια μικρή συνάρτηση
ώστε να προσπεράσω τον περιορισμό.
dynamic f = fd(x => x);
(Παρεμπιπτόντως, αυτή είναι η πρώτη φορα που χρησιμοποιώ το νέο dynamic feature :))