Add append to Data.List.NonEmpty
Motivation
Just as appending together regular lists is a common task, appending non-empty lists is also a common task. Having functions to do so in the prelude would make working with non-empty lists much easier and prevent users from re-implementing the same functions over and over.
Proposal
I propose adding an append
function to the Data.List.NonEmpty
library. This would include, at minimum, a definition for NonEmpty a -> NonEmpty a -> NonEmpty a
. It could also include definitions for NonEmpty a -> [a] -> NonEmpty a
and [a] -> NonEmpty a -> NonEmpty a
.
Here are sample implementations for each case. They currently have very verbose
names because I couldn't think of anything better off the top of my head. I
assume the first would simply be named append
, but I don't have great ideas
for the second and third.
appendNonEmptyNonEmpty :: NonEmpty a -> NonEmpty a -> NonEmpty a
appendNonEmptyNonEmpty (x1 :| xs) ys =
x1 :| xs ++ toList ys
appendNonEmptyRegular :: NonEmpty a -> [a] -> NonEmpty a
appendNonEmptyRegular (x :| xs) ys =
x :| xs ++ ys
appendRegularNonEmpty :: [a] -> NonEmpty a -> NonEmpty a
appendRegularNonEmpty [] ys =
ys
appendRegularNonEmpty (x:xs) ys =
x :| xs ++ toList ys