2010-09-02 17 views
9

Qualcuno conosce qualche sfondo, perché Scala e C# usano la doppia freccia (=>) per lambdas invece di una singola freccia (->)?Perché doppia freccia per Scala e C# lambda?

freccia singolo è più comune nella letteratura, viene utilizzato in Haskell, O'Caml, F #, Groovy e IMO ecc sembra anche più bello :)

+6

Standard ML utilizza anche '=>'. –

+6

Forse (almeno in C#) per evitare confusione con l'operatore di chiamata membro puntatore C++ con lo stesso simbolo. –

risposta

15

Pizza, che era una sorta di un predecessore per Scala aveva -> in tipi di funzione. Ricordo che i programmatori C++ erano sconcertati da questa scelta del simbolo. Questo è il motivo principale per cui Scala ha scelto => AFAIRC. Sembra che i ragazzi della C# abbiano seguito lo stesso ragionamento.

+2

Bene, i ragazzi C# non potevano usare la freccia '->' perché significa la stessa cosa in C# che fa in C++. Poiché Pizza e Scala non hanno l'operatore di dereferenziazione puntatore, non è esattamente lo stesso ragionamento. – Gabe

+1

Questa dovrebbe essere la risposta corretta ad almeno metà della domanda. – ziggystar

21

In C#, forse perché -> operatore è già utilizzato in caso di codice non sicuro (LINK)

+0

questo ha perfettamente senso! – Aivar

+0

Sono abbastanza sicuro che l'influenza di altri linguaggi funzionali abbia avuto un ruolo più importante nel design di Scala. C# non è sicuramente la ragione, il fatto che C# abbia anche la sintassi => potrebbe altrettanto facilmente avere lo stesso ragionamento. – gpampara

10

In Scala, c'è anche la "freccia della mappa" che indica una mappatura da un articolo a a un altro . L'utilizzo di => per lambdas libera -> per cose come Map(1 -> "One", 2 -> "Two") e, come altri hanno sottolineato, lo => non è univoco per C# e Scala.

+6

Ovviamente, si potrebbe anche pensare che se avessero usato la freccia della mappa '=>' da Perl, ciò avrebbe liberato la freccia '->' per lambda. – Gabe