I&#x27;ll add to that - In what &quot;normal langs&quot; is this not a problem?<p>What would a C or C++ programmer expect? Because my experience in those languages says &quot;casting&quot; is a meaningless way to understand what&#x27;s going on.<p>Perl doesn&#x27;t have bareword true&#x2F;falue values. Ruby doesn&#x27;t use &quot;casting&quot;, I think. That is, I think the idiomatic way to express this in Ruby is:<p><pre><code>  &gt;&gt; !!true.to_s
  =&gt; true
  &gt;&gt; !!false.to_s
  =&gt; true</code></pre>