{- Copyright (C) 2010 Andrejs Sisojevs All rights reserved. For license and copyright information, see the file COPYRIGHT -} -------------------------------------------------------------------------- -------------------------------------------------------------------------- module Data.NeverEmptyList where data NeverEmptyList a = NEL a [a] -- | @neverEmptyList2List (NEL h t) = h:t@ nel2List :: NeverEmptyList a -> [a] nel2List (NEL h t) = h:t -- | @list2NeverEmptyList [] = Nothing@ -- -- @list2NeverEmptyList (h:t) = Just (NEL h t)@ list2nel :: [a] -> Maybe (NeverEmptyList a) list2nel [] = Nothing list2nel (h:t) = Just (NEL h t) nelSingleton :: a -> NeverEmptyList a nelSingleton a = NEL a []