MRI has too much Qtrue : Qfalse;
% git grep -P 'Q(true|false|nil|undef)\s+:\s+Q(true|false|nil|undef)' | wc -l 211
Out of those 211 occurrences the most interesting lines include:
complex.c:#define f_boolcast(x) ((x) ? Qtrue : Qfalse) math.c:#define f_boolcast(x) ((x) ? Qtrue : Qfalse) range.c:#define RBOOL(v) ((v) ? Qtrue : Qfalse) rational.c:#define f_boolcast(x) ((x) ? Qtrue : Qfalse)
I strongly believe that we need an orthodox way to do this.
Updated by shyouhei (Shyouhei Urabe) about 3 years ago
We looked at this issue at yesterday's developer meeting. Nobody was against introducing a macro. No consensus over its name was made though.
- RBOOL() seems like a member of RSTRING(), RARRAY() and family so not very good.
- It is in fact a INT2FIX()'s family so I proposed BOOL2BOOL() but this sounds too strange.
- What is needed is a "reverse" of RTEST() so RUNTEST() is proposed (I believe it was not serious).