ご存じのようにident
、Cの任意の識別子について、その場所がヒープ上にあるかスタック上にあるかに関係なく、&ident
へのメモリ位置 (ポインタ) を取得するように記述できます。ident
C 型を使用している場合、この機能にアクセスできると便利なことがよくあります。
FFIのHaskellに同等の操作はありますか?
Haskell にインポートする C 識別子がある場合は、次のように、 FFI 宣言の「&」構文を使用して、そのアドレスへのポインターに変換できます。
foreign import ccall "&" bar :: Ptr CInt
通常、インポートするほとんどすべてが既にポインターであるため、これを行うことは非常にまれです。
Haskell の値自体も、ガベージ コレクターの影響を受けないようにするために、安定したポインターを使用してポインターに変換される場合があります。