2013-09-27 23:52:36 +00:00
|
|
|
{- utilities for simple data types
|
|
|
|
-
|
2015-01-21 16:50:09 +00:00
|
|
|
- Copyright 2013 Joey Hess <id@joeyh.name>
|
2013-09-27 23:52:36 +00:00
|
|
|
-
|
2014-05-10 14:01:27 +00:00
|
|
|
- License: BSD-2-clause
|
2013-09-27 23:52:36 +00:00
|
|
|
-}
|
|
|
|
|
2015-05-10 20:31:50 +00:00
|
|
|
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
|
|
|
|
2019-11-21 19:38:06 +00:00
|
|
|
module Utility.Data (
|
|
|
|
firstJust,
|
|
|
|
eitherToMaybe,
|
|
|
|
) where
|
2013-09-27 23:52:36 +00:00
|
|
|
|
|
|
|
{- First item in the list that is not Nothing. -}
|
|
|
|
firstJust :: Eq a => [Maybe a] -> Maybe a
|
|
|
|
firstJust ms = case dropWhile (== Nothing) ms of
|
|
|
|
[] -> Nothing
|
|
|
|
(md:_) -> md
|
|
|
|
|
|
|
|
eitherToMaybe :: Either a b -> Maybe b
|
|
|
|
eitherToMaybe = either (const Nothing) Just
|