Hi Mark,

Yes I would favour Rebecca's approach in her book to use Semigroup. Personally I never think of lists as Monads, as I see this instance useful only to power list comprehension. 

Concatenation with (<>) is more meaningful and holds better semantics than (<|>), described as just "An associative binary operation".  It's so vague it could be the documentation for a Magma typeclass, and the name "Alternative" is quite loaded (we think especially of parsers when thinking/seeing Alternative).

Cheers,

Hécate

Le 12/05/2024 à 21:41, Mark McConnell via Haskell-Cafe a écrit :
We know that lists have map.  Sometimes we want to take the higher perspective of Functor, replacing map with fmap, then replacing fmap with <$> .  This post asks the corresponding question about append.

The notation for append within List itself is ++ .  Often we think of lists as Monads.  Applicative generalizes Monad, and Alternative specializes Applicative.  Alternative has <|> which behaves as ++ on List.  I have been using <|> for this purpose.

Recently, I have begun to read and enjoy "Effective Haskell".  In Chapter 1, this book uses <> for append.  Clearly they are thinking of List as a Semigroup.

I'm curious about your thoughts on ++ versus <|> versus <> .

_______________________________________________
Haskell-Cafe mailing list
To (un)subscribe, modify options or view archives go to:
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
Only members subscribed via the mailman list are allowed to post.
-- 
Hécate ✨
🐦: @TechnoEmpress
IRC: Hecate
WWW: https://glitchbra.in
RUN: BSD