Scala come linguaggio per la programmazione generica


13

Nel documento "Uno studio comparativo esteso sul supporto linguistico per la programmazione generica" ​​di Garcia et al. viene fornito un interessante confronto delle funzionalità dei linguaggi di programmazione per la programmazione generica:

inserisci qui la descrizione dell'immagine

con la breve spiegazione della terminologia:

inserisci qui la descrizione dell'immagine

Qualcuno può testare il supporto Scala per la programmazione generica all'interno di questo framework? Vale a dire aggiungere una colonna nella prima tabella con spiegazioni se possibile.


3
Ripubblicato in Informatica . Per favore, non farlo. Se vuoi spostare la tua domanda su un altro sito che ritieni più adatto, segnala l'attenzione del moderatore e richiedi una migrazione.
Gilles 'SO- smetti di essere malvagio' il

2
La risposta esatta è data a pag. 17 di " Classi di tipo come oggetti e impliciti " di Oliveira et al.
Artem Pelenitsyn,

Il riferimento viene da Twitter dopo che il link alla domanda beta CS.SE è penetrato lì. Grazie a Miles Sabin (@milessabin su Twitter) e Alexey Romanov.
Artem Pelenitsyn,

Dai un'occhiata alle miglia della biblioteca informe di Sabins e alla sua motivazione dietro la libertà. Penso che
faccia

Risposte:


7

Come menzionato in uno dei commenti del PO, questa è la tabella che spiega come Scala confronta per il supporto di programmazione generico. Link alla fonte pdf

tavolo con Scala elencato

Successivamente, viene fornito il seguente riepilogo:

Scala
Usando il modello CONCEPT possiamo modellare concetti multi-tipo, vincoli multipli e supportare la modellazione retroattiva. Inoltre, il supporto di Scala per gli impliciti significa che gli svantaggi delle soluzioni Java e C # in termini di sovraccarico aggiuntivo, non si applicano a Scala. Pertanto, Scala ottiene buoni risultati sia nella deduzione implicita degli argomenti sia nei criteri di modellazione retroattiva. La sezione 6 mostra che i tipi associati sono supportati in Scala attraverso membri di tipo e tipi di metodo dipendenti e che i membri di tipo possono anche essere usati come alias di tipo.
Come mostrato nella Sezione 3, Scala supporta modelli con ambito lessicale. Inoltre, il controllo del tipo è completamente modulare. Gli impliciti con sovrapposizione prioritaria forniscono supporto per il sovraccarico basato su concetti, come illustrato da zipWithNesempio nella sezione 6.5. Tuttavia, i modelli sovrapposti devono essere strutturati utilizzando una gerarchia di sottotitoli, che potrebbe non essere sempre auspicabile. Pertanto, il punteggio per questa funzione è solo sufficiente. Infine, Scala ha il pieno supporto per funzioni di prima classe e supporta anche i vincoli di uguaglianza.
In sintesi Scala si rivela un linguaggio con un eccellente supporto per le funzioni di programmazione generica, riuscendo a raggiungere lo stesso livello, o anche leggermente meglio, di G (che è stato appositamente progettato come linguaggio per la programmazione generica in generale) o Haskell ( che è stato riconosciuto ha un ottimo supporto per la programmazione generica).

E poi nel riassunto:

I membri del tipo e i tipi di metodi dipendenti aggiungono ulteriore potenza alla lingua e una combinazione dei due meccanismi consente di esprimere i tipi associati. In combinazione con impliciti, i membri del tipo e i tipi di metodo dipendenti rendono Scala un linguaggio pronto per la programmazione generica in generale

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.