Le origini storiche della Scala implicite


14

Scala è stata definita complessa con le sue ricche funzionalità impostate da molti dei miei colleghi e alcuni addirittura ne hanno incolpato tutte le nuove funzionalità. Mentre la maggior parte dei programmatori è a conoscenza delle funzionalità OO, e almeno quelle decenti conoscono anche la programmazione funzionale, in Scala esiste una caratteristica per la quale non sono a conoscenza delle sue origini storiche.

Dato che una delle principali mantra della nostra professione è quello di non reinventare la ruota, sono piuttosto fiducioso, che alla Scala non ha alcun reale inaudite di-prima di funzioni, ma io sto per essere corretti su questo, se necessario.

Per arrivare alla vera domanda, mentre sono consapevole delle origini della maggior parte delle caratteristiche di Scala, non ho mai visto qualcosa di simile alle sue implicitdichiarazioni prima. Ci sono altre lingue (più vecchie!) Là fuori che forniscono anche questa funzione?

Ha senso distinguere i diversi casi di impliciti (poiché possono provenire da fonti diverse), vale a dire conversioni implicite e parametri impliciti?



@gerferra Non è un duplicato esatto e non esiste il concetto di duplicato su più siti. Se vuoi, puoi comporre una risposta che fa riferimento alla domanda SO e alle sue risposte e ai loro riferimenti, è perfettamente accettabile.
yannis,

Risposte:


9

Non sono d'accordo con la risposta di Brian su quell'altra domanda.

Per quanto ne so, non esiste un concetto implicito in nessun'altra lingua. La cronologia dei cambiamenti per Scala implica che le implicazioni fossero una generalizzazione dei limiti della vista e che una vista sia, di per sé, una generalizzazione della conversione automatica dei tipi, che è davvero molto comune.

Gli impliciti hanno quindi abilitato le classi di tipi, ma sarei molto sorpreso se questo fosse l'intento originale.

modificare

Le note di rilascio di Scala 2.0 (2006) dicono:

Le viste in Scala 1.0 sono state sostituite dal concetto più generale di parametri impliciti

Ciò non significa, ovviamente, che siano stati introdotti parametri impliciti con l'obiettivo di sostituire le viste.

Tuttavia, a Odersky piace chiaramente quando un concetto può sostituire più di uno. In tal senso, potrebbe anche essere il caso che Odersky volesse le classi di tipi, ma non volesse introdurre un meccanismo per gestirlo esclusivamente, e, quindi, inventò qualcos'altro che gli permettesse di rimuovere un concetto (Views) e sostituirlo con un concetto più generico che gestisce sia le viste che le classi di tipi.

Nel caso in cui qualcuno fosse interessato, anche le Classi di tipo Poor Man, citate da Brian al Stack Overflow, risalgono al 2006. Chiaramente, Odersky era consapevole del legame tra le classi implicite e quelle di tipo quando le presentò.

Tuttavia, sostengo la mia richiesta. :-)


E la risposta di Norman Ramsey? stackoverflow.com/a/3071461/63489 . Si riferisce a una precedente implementazione di conversioni implicite in Haskell
gerferra,

@gerferra Sembra ragionevole: nota che Odersky è citato in quel documento. Il meccanismo è diverso, ma potrebbe far rotolare la palla. L'articolo di Odersky parla di classi di tipo e le implicazioni sono state introdotte nel 2006, la data della presentazione "Classi di tipo da uomo povero" citata da Brian - chiaramente, c'è un collegamento. Tuttavia, le note di rilascio di Scala 2.0 (2006) affermano che "Le viste in Scala 1.0 sono state sostituite dal concetto più generale di parametri impliciti" . Da quello che so di Odersky, un meccanismo che risolve molteplici problemi avrebbe una grande attrazione per lui.
Daniel C. Sobral,

abbastanza giusto :-)
gerferra

4

Implicit in scala significa due cose diverse

  1. Parametri impliciti. Questi sono apparsi in Haskell, e forse prima in altre lingue. Prove a sostegno: questo documento del 2000 e della documentazione GHC 5.04.1 (settembre 2002, prima che ci fosse una Scala)
  2. Conversioni implicite. Non conosco la prima lingua per avere questi, ma erano in C # 1.0 (usando la implictparola chiave) che precede la prima versione di Scala di circa un anno.

+1, non sapevo che le conversioni implicite fossero disponibili in C #. Grazie per il puntatore.
Frank

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.