Here is one way to do it:
allTheSame xs =
case Set.toList(Set.fromList xs) of
[] -> True -- or False, your choice
x::[] -> True
_ -> False
If you convert a list into a set, and the set back to a list, you will get
a list with only one element for a list of identical elements
here is another approach
allTheSame2 xs =
let
check x rest =
case rest of
[] -> True
y::ys -> x == y && check x ys
in
case xs of
[] -> True -- or False
y::ys -> check y ys
and another approach
allTheSame3 xs =
let
f x acc =
if List.member x acc then acc else x::acc
in
List.length (List.foldl f [] xs) <= 1
On Sat, Jun 18, 2016 at 9:47 PM, Juan Martin Buireo <[email protected]>
wrote:
> Hi, I need to make a function and I am having some trouble.
>
>
> In Haskell I know how to do it but here in Elm is differente due to the
> implementation of Lists.
>
>
> I have a huge list and I want to check if all elements in the list are the
> same. I have a Haskell function that works but in Elm it doesn't because
> List.tail returns a Maybe (List a). So with this, i cannot do a List.map or
> List.all on the tail of the list.
>
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups
> "Elm Discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
There is NO FATE, we are the creators.
blog: http://damoc.ro/
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.