Le origini storiche della Scala implicita

14

Scala è stato definito complesso con la sua ricca funzione impostata da molti dei miei colleghi e alcuni hanno persino incolpato tutte quelle nuove caratteristiche di esso. Mentre la maggior parte dei programmatori è a conoscenza delle funzionalità OO, e almeno quelle decenti conoscono anche la programmazione funzionale, c'è una funzione in particolare in Scala per la quale non sono a conoscenza delle sue origini storiche.

Dato che un importante mantra della nostra professione è quello di non reinventare la ruota, sono piuttosto fiducioso, che Scala non abbia nessuna caratteristiche inedite di prima, ma io sto per essere corretto su questo se necessario.

Per arrivare alla domanda vera, mentre sono consapevole delle origini della maggior parte delle funzionalità di Scala, non ho mai visto qualcosa di simile alle sue dichiarazioni implicit prima. Ci sono altre (più vecchie!) Lingue 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?

    
posta Frank 31.05.2012 - 08:52
fonte

3 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 delle modifiche per Scala implica implicitamente una generalizzazione dei limiti della vista e una vista vincolata è, di per sé, una generalizzazione della conversione automatica dei tipi, che è molto comune in effetti.

Gli impliciti abilitarono quindi le classi di tipi, ma sarei molto sorpreso se quello fosse l'intento originale.

Modifica

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

Views in Scala 1.0 have been replaced by the more general concept of implicit parameters

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

Tuttavia, a Odersky piace chiaramente quando una volta il concetto può sostituirne di più. In questo senso, potrebbe essere il caso che Odersky volesse le classi di tipi, ma non volesse introdurre un meccanismo per gestirle in modo esclusivo, e, quindi, ha escogitato 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 sia interessato, le Classi di tipo di Poor Man, a cui Brian fa riferimento a Stack Overflow, sono datate anche nel 2006. Chiaramente, Odersky era consapevole del legame tra impliciti e classi di tipi quando li presentò.

Tuttavia, sostengo la mia richiesta. : -)

    
risposta data 01.06.2012 - 02:36
fonte
4

Implicit in scala significa due cose diverse

  1. Parametri impliciti. Questi sono comparsi in Haskell e forse altre lingue prima. Prove a sostegno: Questo documento del 2000 e Documentazione GHC 5.04.1 (settembre 2002, prima che fosse una Scala )
  2. Conversioni implicite. Non conosco la prima lingua per averli, ma erano in C # 1.0 (usando la parola chiave implict ) che risale alla prima versione di Scala di circa un anno.
risposta data 02.06.2012 - 04:59
fonte
3

Ho chiesto una domanda simile sullo Stack Overflow. La risposta più votata e altri suggerisce che le origini siano in Haskell.

    
risposta data 01.06.2012 - 15:36
fonte

Leggi altre domande sui tag