Цитирую по официальному описанию языка:
КлассС одной стороны, система устроена очень логично: введение дополнительных операций расширяет множество чисел. Так, деление целых дополняет целые — рациональными. Логарифмы и экспоненты требуют действительных. Однако сразу представить и запомнить всю иерархию классов непросто. Лучше один раз увидеть! ПоэтомуNum
числовых типов является подклассом классаEq
, так как все числа можно сравнить на равенство; его подклассReal
также является подклассом классаOrd
, так как остальные операции сравнения применимы ко всем числам, за исключением комплексных (определенных в библиотекеComplex
). КлассIntegral
содержит целые числа ограниченного и неограниченного диапазона; классFractional
содержит все нецелые типы; а классFloating
содержит все числа с плавающей точкой, действительные и комплексные.
Исходник диаграммы
Оформил как «диаграмму классов», чтобы всем привыкшим к ООП было понятно, что от чего «наследуется» (линия со стрелкой к родителю). Почти все эти типы являются абстрактными («интерфейсами» в ОО-терминологии). Конкретные же числовые типы я обвёл серыми рамочками (можно было обвести и
Ratio
). Полиморфные классы обозначил прямоугольниками со скруглёнными углами. Типы параметров таких полиморфных классов указал «аггрегацией» (линия с ромбиком на стороне полиморфного класса). При составлении ориентировался на первоисточник.Also in English.