Jak filtrować IO [Maybe String]
, aby zachować tylko wartości Just
na liście używając >>=
i zachować kontekst IO.Filtr IO [Maybe String] na IO [String]
-- returns Just, if the passed binary-name is not present on the system
binDoesntExist :: String -> IO (Maybe String)
binDoesntExist ...
Moje obecne rozwiązanie bez bind-operatora:
missingBin :: [String] -> IO [String]
missingBin xs = do
ys <- mapM (\x -> binDoesntExist x) xs
return $ catMaybes ys
Jestem obecnie nauka Haskell i spróbować zrozumieć, jak korzystać z różnych funkcji z biblioteki standardowej. Moje rozwiązanie działa, ale myślę, że jest to czystszy sposób.
I dla zabawy możemy nazwać go 'binDoesn'tExist' apostrofem i będzie on działał. –