Числовая башня - Numerical tower

В Схема И в Лисп диалекты, вдохновленные им, числовая башня это набор типы данных которые представляют числа в данном язык программирования.

Представление числовой башни с пятью типами чисел

Каждый тип башни концептуально «опирается» на более фундаментальный тип, поэтому целое число это Рациональное число и число, но обратное не обязательно верно, т.е. не каждое число является целым числом; эта асимметрия подразумевает, что язык может допускать неявное принуждение числовых типов - без создания семантических проблем - только в одном направлении: приведение целого числа к рациональному не теряет информации и не влияет на результаты функции, но приведение большинства вещественных чисел к целому числу вполне может привести к проблеме (например, , действительная 1/3 не равна целому числу).

Язык программирования Scheme определяет всю свою арифметику в рамках этой модели, как и большинство других диалектов Lisp.[1] Некоторые реализации могут расширять или адаптировать башню. Кава, реализация схемы для JVM, расширяет его типом Quantity, который является даже более общим, чем Number. Болтовня - это еще один язык программирования, который следует этой модели, но у него есть Magnitude как суперкласс Number. Другой популярный вариант - наличие обоих точный и неточный варианты башни или ее части; р7RS Scheme рекомендует, но не требует этого от реализаций. Большинство языков программирования и языковых реализаций не поддерживают числовую башню, подобную схеме, хотя некоторые языки предоставляют ограниченную или непоследовательную поддержку, если позволяет простота реализации.

Рекомендации