Scala sebagai bahasa untuk Pemrograman Generik

13

Dalam makalah "Studi Komparatif Diperpanjang Dukungan Bahasa untuk Pemrograman Generik" oleh Garcia et al. perbandingan fitur bahasa pemrograman untuk pemrograman generik yang menarik diberikan:

masukkan deskripsi gambar di sini

dengan penjelasan singkat tentang terminologi:

masukkan deskripsi gambar di sini

Adakah yang bisa menguji dukungan Scala untuk pemrograman generik di dalam kerangka kerja ini? Yaitu menambahkan kolom di tabel pertama dengan penjelasan jika memungkinkan.

Artem Pelenitsyn
sumber
3
Diposting ulang di Ilmu Komputer . Tolong jangan lakukan itu. Jika Anda ingin memindahkan pertanyaan Anda ke situs lain yang Anda rasa lebih sesuai, beri tanda untuk perhatian moderator dan minta migrasi.
Gilles 'SANGAT berhenti menjadi jahat'
2
Jawaban yang tepat diberikan pada hal. 17 dari " Ketik kelas sebagai Objek dan Implikasinya " oleh Oliveira et al.
Artem Pelenitsyn
Referensi tersebut berasal dari Twitter setelah tautan ke CS.SE beta di sana. Terima kasih kepada Miles Sabin (@milessabin di Twitter) dan Alexey Romanov.
Artem Pelenitsyn
Lihatlah mil mil perpustakaan Sabins dan motivasinya di balik te lib. Saya pikir referensi beberapa makalah
AndreasScheinert

Jawaban:

7

Seperti disebutkan dalam salah satu komentar dari OP, ini adalah tabel yang menjelaskan bagaimana Scala membandingkan untuk dukungan pemrograman generik. Tautan ke sumber pdf

tabel dengan Scala terdaftar

Kemudian, ringkasan berikut diberikan:

Scala
Menggunakan pola CONCEPT kita dapat memodelkan konsep multi-tipe, banyak kendala dan mendukung pemodelan retroaktif. Selanjutnya, dukungan Scala untuk implisit berarti bahwa kelemahan solusi Java dan C # dalam hal overhead tambahan, tidak berlaku untuk Scala. Dengan demikian, skor Scala baik dalam pengurangan argumen implisit dan kriteria pemodelan retroaktif. Bagian 6 menunjukkan bahwa tipe terkait didukung dalam Scala melalui anggota tipe dan tipe metode dependen, dan anggota tipe juga dapat digunakan sebagai alias tipe.
Seperti yang ditunjukkan pada Bagian 3, Scala mendukung model dengan cakupan leksikal. Selain itu, pengecekan tipe sepenuhnya modular. Implisit tumpang tindih yang diprioritaskan menyediakan beberapa dukungan untuk kelebihan beban berbasis konsep seperti yang diilustrasikan oleh zipWithNcontoh di Bagian 6.5. Namun, model yang tumpang tindih harus disusun menggunakan hierarki subtipe, yang mungkin tidak selalu diinginkan. Dengan demikian, skor untuk fitur ini hanya cukup. Akhirnya, Scala memiliki dukungan penuh untuk fungsi-fungsi kelas satu dan juga mendukung kendala kesetaraan.
Singkatnya Scala ternyata menjadi bahasa dengan dukungan yang sangat baik untuk fitur pemrograman generik, mengelola tarif pada tingkat yang sama, atau bahkan sedikit lebih baik, daripada G (yang dirancang khusus sebagai bahasa untuk pemrograman generik dalam skala besar) atau Haskell ( yang telah diakui memiliki dukungan yang sangat baik untuk pemrograman generik).

Dan kemudian dalam ringkasan:

Tipe anggota dan tipe metode dependen menambah kekuatan ekstra ke bahasa dan kombinasi dari dua mekanisme memungkinkan tipe terkait untuk diekspresikan. Dalam kombinasi dengan implisit, tipe anggota dan tipe metode dependen menjadikan Scala bahasa yang siap untuk pemrograman generik dalam skala besar

Komunitas
sumber