, annotateResult
, iterateOk
, select
+ , runListHead
, LookupResult(..)
, MatchPriority(..)
, lookupName
import Control.Monad.Trans
import Data.Function
import Data.List
+import Data.Maybe (listToMaybe)
import Data.Set (Set)
import qualified Data.Set as Set (empty)
import Text.JSON (JSON)
-> a -- ^ first result which has a True condition, or default
select def = maybe def snd . find fst
+-- | Apply a function to the first element of a list, return the default
+-- value, if the list is empty. This is just a convenient combination of
+-- maybe and listToMaybe.
+runListHead :: a -> (b -> a) -> [b] -> a
+runListHead a f = maybe a f . listToMaybe
+
-- * Lookup of partial names functionality
-- | The priority of a match in a lookup result.