I can relate to that.
The and keyword is available in other languages and I very much like it (readability).
In the past I had to ‘try and error’ a few times when performing element-wise AND.
A few of the following lines were (and still are) not entirely intuitive to me.
1<2 & 0<1 #false as discussed above
1<2 && 0<1 #true
(1<2) + (0<1) #2
+((1<2),(0<1)) #2
&&(1<2,0<1) # -> error (which I would not have expected)
#I guess this does not work because && is not a function?
myand(x,y) = x && y
myand(1<2,0<1) #works as expected
#elementwise
.+(([1,2] .< [2,3]),([0,0] .< [1,1])) # [2,2]
+(([1,2] .< [2,3]),([0,0] .< [1,1])) # [2,2]
myand.(([1,2] .< [2,3]),([0,0] .< [1,1])) # works as expected
([1,2] .< [2,3]) &&. ([0,0] .< [1,1]) #this fails, which may be unexpected to some users too
([1,2] .< [2,3]) .& ([0,0] .< [1,1]) #produces the desired result (as we are working with BitVectors)