Иностранный.C эквивалент Haskell оператора амперсанда C (&) - PullRequest
1 голос
/ 21 апреля 2011

Как вы знаете, для любого идентификатора ident в C вы можете написать &ident, чтобы получить ячейку памяти (указатель) в ident, независимо от того, находится ли эта ячейка в куче или в стеке.При работе с типами Си часто полезно иметь доступ к этой функциональности.

Есть ли эквивалентная операция в Haskell в FFI?

1 Ответ

2 голосов
/ 21 апреля 2011

Если у вас есть идентификатор C, который вы импортируете в Haskell, вы можете преобразовать его в указатель на этот адрес с помощью синтаксиса "&" в объявлениях FFI , например:

foreign import ccall "&" bar :: Ptr CInt

Обычно это довольно редкая вещь, так как почти все, что вы импортируете, уже является указателем.

Сами значения Haskell также можно преобразовать в указатели, используя стабильные указатели , чтобы гарантировать, что сборщик мусора не затронет их.

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