Simplify list compare logic

#1

I’m sure this could be done better, so just wondering how you would compare all values in two lists, returning true if all values are the same.

My current solution:

secret = [3,4,5,1,3,6]
challenge = [3,4,5,1,3,6]

List.map2 (==) secret challenge |> List.all (\c -> c == True)
--> True

I’d like to just use the core, but examples using List.Extra or something else would be interesting for my education. Specifically, I think this may be a time I could use the >> operator, but I have trouble conceptualising its use.

#2

Isn’t comparing the lists directly the same?

In elm repl:

> secret = [3,4,5,1,3,6]
[3,4,5,1,3,6]
    : List number
> challenge = [3,4,5,1,3,6]
[3,4,5,1,3,6]
    : List number
> (secret == challenge)
True : Bool

> challenge = [3,4,5,1,3,5]
[3,4,5,1,3,5]
    : List number
> (secret == challenge)
False : Bool

(Note that parentheses are needed because of a bug in elm repl if I remember correctly)

Or did I miss something? Maybe you want another way as an exercise?

Also your solution won’t work if lists have a different length as List.map2 ignores extra values:

> challenge = [3,4,5,1,3,6,7]
[3,4,5,1,3,6,7]
    : List number
> List.map2 (==) secret challenge |> List.all (\c -> c == True)
True : Bool
#3

Hah! Of course it is! Sorry, I was looking for complexity where there shouldn’t have been.

closed #4

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.