Filtern von Verbundstrukturen mit Lens

7

Ich habe ein [(a, Maybe b)] und möchte ein [(a, b)] erhalten, mit allen Paaren, bei denen das zweite Element Nothing herausgefiltert wurde. Gibt es eine prägnante Möglichkeit, diese Operation mit dem Objektiv zu beschreiben?

    
Narvius 25.10.2013, 14:07
quelle

3 Antworten

9

Wie wäre es mit etwas wie

? %Vor%

Verwenden von (^..) und folded von Control.Lens.Fold und aside und _Just von Control.Lens.Prism .

Der Schlüssel ist aside , eine praktische Funktion, die ein Prisma aufbaut, das an einem Paar eines Prismas arbeitet, das an einer Komponente des Paares arbeitet.

    
danidiaz 25.10.2013, 14:22
quelle
8

Trotz der Genialität der Objektive wäre das Folwowing wahrscheinlich das Prägnanzzeichen:

%Vor%

(Um nicht von Lesbarkeit zu sprechen.)

    
Ingo 25.10.2013 15:01
quelle
2
%Vor%

Sie müssen Data.Traversable , Data.Maybe und% Traversable ((,) a) instance importieren. Ich überlege mir, wie es dem Leser geht.

    
sdcvvc 25.10.2013 16:01
quelle

Tags und Links