Imaginez que j'ai la liste suivante:Appliquer deux plis ou accesseurs et seulement réussir lorsque les deux réussir
lst :: [(Bool, Maybe Integer)]
lst = [(True, Just 3), (True, Nothing), (False, Just 12)]
Utilisation de la bibliothèque de l'objectif, je veux extraire les éléments des tuples, mais je veux seulement qu'il réussisse lorsque le deuxième élément est Just
. Je veux une certaine optique, split
qui fonctionne comme ceci:
> lst ^.. folded.split (_1.to not) (_2._Just)
[(False, 3), (True, 12)]
Je peux mettre en œuvre split
moi-même comme ceci:
split :: Getting (First a) s a -> Getting (First b) s b -> Fold s (a, b)
split a b = folding (\x -> (,) <$> (x ^? a) <*> (x ^? b))
... qui semble fonctionner. Cependant, il semble que je doive réinventer la roue. Y at-il quelque chose déjà fourni par la bibliothèque de lentilles qui accomplit cela d'une manière tout aussi agréable?