HsYAML-0.1.1.3: src/Data/DList.hs
{-# LANGUAGE Safe #-}
-- |
-- Copyright: © Herbert Valerio Riedel 2018
-- SPDX-License-Identifier: GPL-2.0-or-later
--
-- Minimal API-compatible rip-off of @Data.DList@
module Data.DList
( DList
, empty
, singleton
, append
, toList
) where
newtype DList a = DList ([a] -> [a])
toList :: DList a -> [a]
toList (DList dl) = dl []
singleton :: a -> DList a
singleton x = DList (x:)
empty :: DList a
empty = DList id
append :: DList a -> DList a -> DList a
append (DList xs) (DList ys) = DList (xs . ys)