module Text.XML.DOM.Parser.Buildable
( Buildable(..)
) where
import Data.Functor.Identity
import Data.List.NonEmpty as NE
import Data.Maybe
class Traversable f => Buildable f where
build :: [a] -> Maybe (f a)
instance Buildable Identity where
build :: forall a. [a] -> Maybe (Identity a)
build = (a -> Identity a) -> Maybe a -> Maybe (Identity a)
forall a b. (a -> b) -> Maybe a -> Maybe b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> Identity a
forall a. a -> Identity a
Identity (Maybe a -> Maybe (Identity a))
-> ([a] -> Maybe a) -> [a] -> Maybe (Identity a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Maybe a
forall a. [a] -> Maybe a
listToMaybe
instance Buildable [] where
build :: forall a. [a] -> Maybe [a]
build = [a] -> Maybe [a]
forall a. a -> Maybe a
Just
instance Buildable Maybe where
build :: forall a. [a] -> Maybe (Maybe a)
build = Maybe a -> Maybe (Maybe a)
forall a. a -> Maybe a
Just (Maybe a -> Maybe (Maybe a))
-> ([a] -> Maybe a) -> [a] -> Maybe (Maybe a)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. [a] -> Maybe a
forall a. [a] -> Maybe a
listToMaybe
instance Buildable NonEmpty where
build :: forall a. [a] -> Maybe (NonEmpty a)
build = [a] -> Maybe (NonEmpty a)
forall a. [a] -> Maybe (NonEmpty a)
NE.nonEmpty