2010-02-05 17 views
11

Da una settimana sto leggendo Programmazione in Scala. Gli autori introducono elementi del linguaggio passo dopo passo, ma sono ancora confuso quando usare le cose funzionali come attori, chiusure, curry, ....Catalogo Scala di modelli funzionali di progettazione

Sto cercando un catalogo di casi d'uso tipici o le migliori pratiche per i contrasti funzionali.

non mi riferisco reimplementare modello noto come GoF a Scala come

risposta

8

Essere confusi su quando utilizzare le chiusure o accattivarsi è come essere confusi su quando utilizzare le classi. Sono solo una parte della lingua e servono qualsiasi compito tu metta. Quando OO raggiunse per la prima volta il mainstream, quasi la stessa domanda fu posta alle classi.

Come per gli attori, sono un paradigma di programmazione distribuito - e non, attenzione, parte del linguaggio stesso. Vengono utilizzati quando si desidera sfruttare la concorrenza e l'applicazione non ha bisogno di condividere lo stato tra processi concorrenti, né è principalmente orientata all'elaborazione parallela.

+1

Probabilmente hai ragione, ho familiarità con OO e capisco la tua risposta. Per OO avrei potuto chiedere quando utilizzare l'ereditarietà o l'aggregazione, quando dovrei avere un'interfaccia e così via. Per queste domande si trovano molte risorse ma quando usare quale costrutto funzionale è un po 'difficile senza alcuna esperienza. Un collegamento a una discussione di questi argomenti andrebbe bene. – stacker

+2

@stacker Questo è abbastanza vero, e io, io stesso, non so molto cosa consigliare. Alcuni libri, come The Little Schemer e The Seasoned Schemer, di Daniel Friedman, o Purely Functional Data Structures, di Chris Okasaki, possono aiutare alcuni. Ma non c'è niente là fuori come Scala. Ad esempio, la _opzione_ per avere curring è piuttosto rara. Nella maggior parte delle lingue, o tutto è al curry o niente lo è. E, naturalmente, il mix di OO rende ancora più difficile scegliere un approccio. –

+1

Ho trovato questo sito utile: http://scala.sygneca.com/code/start – stacker

Problemi correlati