Why "every?" has '?' where as "some" doesnt have '?' in Clojure?
clojure
Solution
`every?` returns true or false, so it gets a question mark. `some` doesn't return a boolean, it returns "the first logically true value returned by pred", and returns `nil` otherwise.
Here's the lame example I came up with:
user=> (some #(if (= 0 %) 1 0) [1 3 5 0 9])
0
The first element in the collection gets passed into the predicate, the predicate evaluates to 0, which is logically true so `some` returns 0. you can see `some` is not returning true or false.
So `every?` gets a question mark because it returns true or false. `some` returns the value returned by `pred` or nil, so it doesn't get a question mark.
Problem
What is fundamental difference for having a '?' in `every?` and not in `some` functions of clojure? ``` user> (every? true? [true true false]) false user> (some true? [true false false]) true ``` Thanks.