[Haskell-beginners] What is operator :| ?
Francesco Ariis
fa-ml at ariis.it
Fri Mar 28 07:21:46 UTC 2014
On Fri, Mar 28, 2014 at 01:58:11AM -0500, John M. Dlugosz wrote:
> On 3/28/2014 1:41 AM, Tony Morris wrote:
> >It is the constructor for a non-empty list (Data.List.NonEmpty).
> >
> >http://hackage.haskell.org/package/semigroups-0.12.2/docs/Data-List-NonEmpty.html
> >
>
> Interesting— this is the page I had found: http://www.haskell.org/haskellwiki/Non-empty_list
>
>
> So why do we need both :| and <| (or cons) ?
>
Look at the definitions and type signatures:
(<|) :: a -> NonEmpty a -> NonEmpty a
a <| ~(b :| bs) = a :| b : bs
(:|) :: a -> [a] -> NonEmpty a
data NonEmpty a = a :| [a]
(I found the type-sig for (:|) using ghci ":t").
It is now evident that the constructor (:|) takes element/list to
build |NonEmpty a|, while (<|) appends an |a| to a |NonEmpty a|.
More information about the Beginners
mailing list