neural-0.3.0.1: src/Data/Utils/Traversable.hs
{-# OPTIONS_HADDOCK show-extensions #-}
{-|
Module : Data.Utils.Traversable
Description : utilities for traversables
Copyright : (c) Lars Brünjes, 2016
License : MIT
Maintainer : brunjlar@gmail.com
Stability : experimental
Portability : portable
This module contains utility functions related to the 'Traversable' typeclass.
-}
module Data.Utils.Traversable
( fromList
) where
import Data.Utils.Stack
-- | Tries to create a traversable (which must also be applicative) from a list.
-- If the list contains too few elements, 'Nothing' is returned,
--
-- >>> import Data.MyPrelude
-- >>> fromList [1, 2, 3] :: Maybe (Identity Int)
-- Just (Identity 1)
--
-- >>> fromList [] :: Maybe (Identity Char)
-- Nothing
--
fromList :: (Applicative t, Traversable t) => [a] -> Maybe (t a)
fromList xs = sequenceA $ evalStack (sequenceA $ pure pop) xs