Behavior of clojurescript `and` function with integers is confusing

boolean, clojurescript, integer

Solution

`and` returns its last argument if all the arguments are truthy, otherwise it returns `false` (it also stops evaluating the arguments as soon as it reaches the first falsey one). In Clojure, unlike Javascript, `0` and `1` are both truthy. The only falsey values in Clojure are `false` and `nil`.

http://blog.jayfields.com/2011/02/clojure-truthy-and-falsey.html

Problem

Probably just showcasing my ignorance of lisp(s) here, but I have some slightly odd results with ClojureScript's `and` function: ``` (and true false) ; false (and false true) ; false (and 1 0) ; 0 (and 0 1) ; 1 !? ``` What's going on here? I'd at least expect symmetry; is this something to do with the bit-storage of `true` and `false`?

Original source