Saya bertanya-tanya apa perbedaan implementasi teknis antara C # dan Scala dan bagaimana kedua solusi dibandingkan dengan ide-ide dan keprihatinan implementasi yang disuarakan dalam email Peek Past lambda oleh Brian Goetz, dikirim ke milis Project Lambda (JSR 335) ?
Dari email:
Kami menjelajahi jalan "mungkin lambdas hanya menjadi contoh kelas dalam, itu akan sangat sederhana", tetapi akhirnya sampai pada posisi "fungsi adalah arah yang lebih baik untuk masa depan bahasa".
dan selanjutnya:
Pandangan lambdas-adalah-objek tentang konflik dunia dengan masa depan yang memungkinkan ini. Pandangan lambda-fungsi-dunia tidak, dan menjaga fleksibilitas ini adalah salah satu poin yang mendukung tidak membebani lambda bahkan dengan penampilan objek-ness.
Kesimpulan:
Lambdas-are-functions membuka pintu. Lambdas-are-objek menutupnya.
Kami lebih suka melihat pintu-pintu itu dibiarkan terbuka.
Dan beberapa komentar dari seseorang di utas Reddit mengatakan:
Saya sebenarnya mengirim e-mail kepada Neal Gafter tentang ini dan untuk pemahaman saya yang terbatas tentang penjelasannya C # dan desain Java saat ini sangat mirip karena Delegasi sebenarnya objek dan bukan tipe fungsi. Sepertinya dia percaya bahwa Jawa harus belajar dari kerugian lambda C # dan menghindarinya (seperti halnya C # belajar dari kerugian Jawa dan menghindarinya pada awalnya).
Mengapa pendekatan "Lambdas-is-functions" memungkinkan lebih banyak peluang di masa depan daripada "Lambdas-are-objects"? Dapatkah seseorang menjelaskan perbedaan apa yang ada dan bagaimana mereka akan mempengaruhi bagaimana kode akan ditulis?
Melihat hal-hal di Scala "hanya bekerja", saya terus berpikir bahwa saya kehilangan sesuatu tentang pendekatan yang diambil / diusulkan dalam C # / Java (8), mungkin itu terkait dengan kekhawatiran tentang kompatibilitas mundur?