Załóżmy, że chcemy uzyskać map
nad kolekcją, ale zbieramy wyniki zmapowanej funkcji tylko wtedy, gdy odwzorowana wartość spełnia określone kryteria. Jestem obecnie robi to jako takie:IDENTYFIKACJA Haskella dla mapy "selektywnej"
func = foldl (\acc x, -> (maybeGrab x):acc) []
maybeGrab a
| a > 5 = [someFunc a]
| otherwise = []
Chociaż to działa, jestem pewien, że jest bardziej idiomatyczne „prawo/common/bardziej rozpoznawalny” sposób to zrobić.
Czy filtr nie spełnia wymagań? A może mapMaybe z Data.Maybe? –
@JeffFoster: 'mapMaybe' jest poprawną odpowiedzią. Powinieneś opublikować ją jako odpowiedź, abyśmy mogli ją zatwierdzić. – Chuck
Tak, Jeff ma rację. Najbliższa odpowiedź ma mój głos. –