Abs и minBound - PullRequest
       4

Abs и minBound

0 голосов
/ 08 февраля 2019

Играя с minBound для разных случаев, я пробовал

> minBound :: Int
=> -9223372036854775808

, что кажется разумным.

Однако,

> abs minBound :: Int 
=> -9223372036854775808

Как это возможно?Разве не abs x >= 0, предполагая x :: Int?

Есть ли какое-то понимание семантики, которое мне здесь не хватает?

1 Ответ

0 голосов
/ 08 февраля 2019
Prelude> minBound :: Int
-9223372036854775808
Prelude> maxBound :: Int
9223372036854775807

Обратите внимание, что число 9223372036854775808 не может быть представлено как целое число.Это является следствием представления дополнения , которое, вероятно, используется здесь в фоновом режиме.Абсолютное значение minBound не может быть представлено как член типа Int, поэтому вы получите переполненное значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...