Добавление отдельного типа «Boolean», который не совместим с целыми числами, сделало бы компилятор более сложным, чем простое использование целых чисел для этой цели. Наличие отдельного логического типа, который совместим с целыми числами, делает необходимым указание возможных последствий сохранения значения, отличного от 0
или 1 в логический объект, или выполнение числовых вычислений на логическом
объект, представление которого не содержит ни битовый шаблон, связанный с
«0» или «1». Дано:
someBool = intFunction();
someInt = someBool;
требование, чтобы someInt получил значение 1, если intFunction возвращает любое ненулевое значение, как правило, делает вышеупомянутое дороже, чем
someChar = intFunction();
someInt = someChar;
В тех случаях, когда требовалась бы прежняя семантика, они могли быть достигнуты без использования логического типа, через:
someChar = !!intFunction();
someInt = someChar;
Поскольку все, что может быть сделано с использованием булевых типов, также может быть выполнено и без них, и во многих случаях код, который использует типы символов, может быть более эффективным, чем булевы, я бы предположил, что никогда не было (и до сих пор нет ) любая реальная потребность в них.