2010-02-05 12 views
11

Seit einer Woche lese ich Programmierung in Scala. Die Autoren stellen Elemente der Sprache Schritt für Schritt vor, aber ich bin immer noch verwirrt, wenn die funktionalen Dinge wie Schauspieler, Verschlüsse, Curry, ... zu verwenden sind.Scala Katalog der funktionalen Designmuster

Ich suche einen Katalog von typischen Anwendungsfällen oder Best Practices für funktionale Konstrukte.

meine ich nicht gut bekanntes Muster wie GoF in Scala Neuimplementierung wie

Antwort

8

Sein verwirrt, wenn Verschlüsse zu verwenden oder Striegeln ist wie verwirrt zu sein, wenn Klassen zu verwenden. Sie sind nur ein Teil der Sprache, und dienen jeder Aufgabe, die Sie es setzen. Als OO zum Mainstream wurde, wurde die gleiche Frage an die Klassen gestellt.

Wie bei Schauspielern handelt es sich um ein verteiltes Programmierparadigma - und nicht um einen Teil der Sprache selbst. Sie werden verwendet, wenn Sie die Nebenläufigkeit nutzen möchten und Ihre Anwendung nicht den Status zwischen konkurrierenden Prozessen teilen muss, noch ist sie hauptsächlich auf parallele Verarbeitung ausgerichtet.

+1

Sie haben wahrscheinlich Recht, ich bin vertraut mit OO und ich verstehe Ihre Antwort. Für OO hätte ich gefragt, wann Vererbung oder Aggregation verwendet werden soll, wann ich eine Schnittstelle haben soll und so weiter. Für diese Fragen würde man viele Ressourcen finden, aber wann man welches funktionale Konstrukt verwendet, ist ein bisschen schwierig ohne Erfahrung. Ein Link zu einer Diskussion dieser Themen wäre in Ordnung. – stacker

+2

@stacker Das ist wahr genug, und ich selbst weiß nicht viel, was ich empfehlen soll. Einige Bücher wie "Der kleine Scherer" und "The Seasoned Schemer" von Daniel Friedman oder "Purely Functional Data Structures" von Chris Okasaki können einigen helfen. Aber da draußen ist nichts wie Scala. Zum Beispiel ist die Option Currying eher selten. In den meisten Sprachen ist entweder alles curried oder nichts. Und natürlich macht die Mischung von OO es noch schwieriger, einen Ansatz zu wählen. –

+1

Ich fand diese hilfreiche Seite: http://scala.sygneca.com/code/start – stacker