Wie vereinfacht man verschachtelte Kartenaufrufe?

8

Angenommen, ich habe ein paar verschachtelte Funktoren, z.B. List[Option[Int]] und muss die map der innersten% aufrufen.

Jetzt verwende ich verschachtelte maps :

%Vor%

Was ist, wenn ich zum Beispiel 3 Verschachtelungsebenen habe?
Gibt es eine einfache Alternative zu verschachtelten maps ?

    
Michael 08.07.2015, 05:25
quelle

3 Antworten

7

Ja, das ist mit scalaz.Functor möglich:

%Vor%

Dies ist jedoch länger als einfach map mit einem verschachtelten map aufzurufen. Wenn Sie häufig verschachtelte Strukturen zuordnen, können Sie Hilfsfunktionen erstellen:

%Vor%

Verwendung:

%Vor%     
ZhekaKozlov 08.07.2015, 07:05
quelle
5

Wenn Sie viele verschachtelte Funktoren haben und diese nicht abflachen möchten (d. h. sie sind keine Monaden oder Sie möchten sie nicht als Monaden verwenden), dann können Linsen helfen. Es gibt eine Quicklens-Implementierung, die traversierbare Linsen unterstützt: Ссылка .

Beispiel (Sorry hat nicht versucht, es zu kompilieren):

%Vor%

Wie auch immer, Sie müssen die Verschachtelungsebene angeben, aber Sie müssen hier keine Verschachtelung durchführen. Und es ist genug, es einmal zu spezifizieren, wie (konzeptionelles Beispiel, nicht überprüft):

%Vor%     
dk14 08.07.2015 07:02
quelle
0

Aus der Frage, die ich verstanden habe, binden Sie den Listen-Iterator e.i. Entfernen Sie die oberen Listenebenen. In diesem Fall können Sie flatten verwenden, um eine Liste von Listen in eine einzige Liste zu konvertieren.

Ich werde einige Schichten der Liste mit flatten

entfernen

Code: -

%Vor%

Ergebnisse: -

%Vor%     
Puneeth Reddy V 08.07.2015 06:48
quelle

Tags und Links