私はHaskellを呼び出すC関数を持っています。 C関数はHaskellデータ型のStablePtrを渡し、Haskellコードはその値の一部を変更する必要があります。これを行う効率的な方法は何ですか?たとえば、次のようHaskell + StablePtr
foreign export ccall editChar :: StablePtr MyObject -> CInt -> CChar -> IO()
data MyObject = Obj String
editChar :: StablePtr MyObject -> CInt -> CChar -> IO()
editChar cMyObjectPtr index newChar = do
-- Code goes here
はどのようにeditCharはインデックスにnewCharにでシャアを設定するために、可能な限り効率的かつHaskellyように実施される検討しますか?最終的には、変更されるオブジェクトはかなり大きなメモリになり、多くのサブコンポーネントを持つため、editCharの結果として新しいオブジェクトを返すことは問題になりません。