[ruby-core:119262] [Ruby master Feature#20756] Introduce Boolean class

Issue #20756 has been reported by kbrock (Keenan Brock). ---------------------------------------- Feature #20756: Introduce Boolean class https://bugs.ruby-lang.org/issues/20756 * Author: kbrock (Keenan Brock) * Status: Open ---------------------------------------- Hello All, Is is possible to add a parent class for `TrueClass` and `FalseClass`? I always found it strange that there was not a concept to group `true` and `false` together. e.g.: ```ruby class TrueClass < Boolean ; end class FalseClass < Boolean ; end # replaces the hack: module Boolean ; end TrueClass.include(Boolean); FalseClass.include(Boolean); ``` In our code, we often want to validate that a value is of a certain type. ```ruby case(value) when String ... when Integer ... when true, false ... # Boolean # alt: when TrueClass, FalseClass end # or def valid_args? value.kind_of?(String) end def valid_args? value.kind_of?(Integer) end def valid_args? [true, false].include?(value) [TrueClass, FalseClass].detect { |klass| value.kind_of?(klass) } end ``` Does it make sense to others to have a way to group `true` and `false` together? Thank you for your thoughts, Keenan -- https://bugs.ruby-lang.org/

Issue #20756 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Rejected #12515 is an enough reason to reject this idea.
Rejected for several reasons:
* many gems and libraries had already introduced Boolean class. I don't want to break them. * true and false are the only representative of true-false values. In Ruby. nil and false are falsy values, and everything else is a true value. There's no meaning for having a superclass of TrueClass and FalseClass as Boolean.
Even if we introduced `Boolean` class, it'd only used to check type/class using `kind_of?` (which is against duck-typing principle). Since we have no common behavior/implementation of boolean objects. Matz. ---------------------------------------- Feature #20756: Introduce Boolean class https://bugs.ruby-lang.org/issues/20756#change-109857 * Author: kbrock (Keenan Brock) * Status: Rejected ---------------------------------------- Hello All, Is is possible to add a parent class for `TrueClass` and `FalseClass`? I always found it strange that there was not a concept to group `true` and `false` together. e.g.: ```ruby class TrueClass < Boolean ; end class FalseClass < Boolean ; end # replaces the hack: module Boolean ; end TrueClass.include(Boolean); FalseClass.include(Boolean); ``` In our code, we often want to validate that a value is of a certain type. ```ruby case(value) when String ... when Integer ... when true, false ... # Boolean # alt: when TrueClass, FalseClass end # or def valid_args? value.kind_of?(String) end def valid_args? value.kind_of?(Integer) end def valid_args? [true, false].include?(value) [TrueClass, FalseClass].detect { |klass| value.kind_of?(klass) } end ``` Does it make sense to others to have a way to group `true` and `false` together? Thank you for your thoughts, Keenan -- https://bugs.ruby-lang.org/
participants (2)
-
kbrock (Keenan Brock)
-
matz (Yukihiro Matsumoto)