Бул всаживать как дочерний по отношению к вашему типу neboolean будет мусором и путаницей
не всегда нужна третья логика, а если нужна: АТД легко ее решают... в виде енамов или кастомных штук, а также в виде монады Maybe и прочего — более мощнее и надежнее
как вариант когда нет енама и задача отобразить третье пустое состояние: использовать Null Object Pattern по дефолту использовать NullObject, если нет значения, если есть — использовать уже конкретный тип (например в приложении на Ангуляре я ее использую для аутентификации, если не залогинен, то по дефолту у меня AnonymousPassport, если залогинен — Passport, по итогу программа корректная и без всяких псевдо-типов (залогинен, незалогинен, neboolean) — код прямой как АК-47 без резолвов какого-то третьего типа
enum лучше, проходим дальше
Есть более общее решение под названием "Алгебраический тип данных"
https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%B5%D0%B1%D1%80%D0%B0%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
Бул всаживать как дочерний по отношению к вашему типу neboolean будет мусором и путаницей
не всегда нужна третья логика, а если нужна: АТД легко ее решают... в виде енамов или кастомных штук, а также в виде монады Maybe и прочего — более мощнее и надежнее
вот пример из "Chaotic Evil":
https://wiki.php.net/rfc/enumerations_and_adts#examples
как вариант когда нет енама и задача отобразить третье пустое состояние: использовать Null Object Pattern
по дефолту использовать NullObject, если нет значения, если есть — использовать уже конкретный тип (например в приложении на Ангуляре я ее использую для аутентификации, если не залогинен, то по дефолту у меня AnonymousPassport, если залогинен — Passport, по итогу программа корректная и без всяких псевдо-типов (залогинен, незалогинен, neboolean) — код прямой как АК-47 без резолвов какого-то третьего типа
спасибо за развернутый ответ. поизучаю