Ruby のブーリアン演算子の結合規則って?

ちょっとハマった。

result = Alphabet?(ch) or Digit?(ch);

こういうソースで
Alphabet?(ch) が false を返し、Digit?(ch) が true を返す場合、result には何が入るか?


true を期待してたんだけど……結果は false だった。

result = (Alphabet?(ch) or Digit?(ch));

こう書いたら true になった。
使うべき演算子を間違えてるのか、そういう仕様なのか、バグなのか。
とりあえず使うべき演算子を間違えてる可能性が大な気がする
(調べもせずに雰囲気で or って書いたら EmEditor が色分けしてくれたのでそのまま使ってた)
まぁ、まだ Ruby の練習中なのでそういうことはままある気がする。


…追記。
コメントで ま。さんから教えていただいたとおり、Ruby には

とorの二つ(当然&&とandも)の論理演算子があり、アルファベット表記の方は

一群の代入系演算子よりも結合優先度が低くなっています。
"プログラミングRuby 第2版 言語編"と"オブジェクト指向スクリプト言語Ruby"を調べてみた限りでは両方ともショートサーキット評価がなされる論理演算子のようです。
逆にどういう時の為に or や and が用意されているのかについては両書籍には特に記載が無いようなので、普段は普通のC系言語のように && や || を使っていれば間違いなさそうです。
で、予想通りビット演算子の & と | も用意されてる。。というかこちらは Ruby ではメソッドのようで、メソッドなので当然ショートサーキット評価は行われないと思います。