Почему в GH C .Prim операции указателя могут завершаться неудачей с непроверенным исключением? - PullRequest
3 голосов
/ 26 февраля 2020

Я делаю обзор литературы об использовании указателей на функциональных языках, и я встретил следующий комментарий в документации GHC.Prim:

reallyUnsafePtrEquality# :: a -> a -> Int#

Returns 1# if the given pointers are equal and 0# otherwise.

Warning: this can fail with an unchecked exception.

Я понимаю, что Есть много способов неправильно использовать эту функцию, но почему она вызывает исключение?

1 Ответ

3 голосов
/ 26 февраля 2020

Нашел ответ в исходном коде GH C: https://github.com/ghc/ghc/blob/master/compiler/prelude/primops.txt.pp#L3199 -L3233

Оказывается, что он не может вызвать исключение, но функция помечена как выбрасывающая, так что GH C не будет двигаться.

...