2016-07-28 8 views
5

Eingang: [Just "foo", Just "bar", Nothing, Just "quux"]Extrahieren einer Liste von Werten aus einer Liste von maybes ohne fromJust

Ausgang: ["foo", "bar", "quux"]

Ich bin nicht zufrieden mit der folgenden Lösung mit fromJust, weil es zu Ulme nicht sehr portabel ist die nicht wie unsichere Funktionen:

extract list = map fromJust $ filter isJust list

gibt es eine andere prägnante/idioma tic Weg, um dies zu erreichen?

+0

Für pepole für die Ulme Übersetzung suchen, kann dies erreicht werden durch 'List.filterMap identity' – Delapouite

Antwort

13

können Sie verwenden catMaybes:

import Data.Maybe 
catMaybes list 
3
Λ: :m + Data.Maybe 
Λ: concatMap maybeToList [Just "foo", Just "bar", Nothing, Just "quux"] 
["foo","bar","quux"]