2016-07-28 8 views
5

Wejście: [Just "foo", Just "bar", Nothing, Just "quux"]Wyodrębnianie listę wartości z listy maybes bez fromJust

wyjściowa: ["foo", "bar", "quux"]

Nie jestem zadowolony z następującym roztworze przy użyciu fromJust ponieważ nie jest bardzo przenośny do wiązu który nie lubi funkcje niebezpiecznych:

extract list = map fromJust $ filter isJust list

Czy istnieje inny zwięzły/uzywany sposób, aby to osiągnąć?

+0

pepole Dla szukających tłumaczeniu wiąz, można to osiągnąć za pomocą 'List.filterMap identity' – Delapouite

Odpowiedz

13

Można użyć catMaybes:

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