Cで実装されたリンクリストデータ構造を作成したかったのです。リンクリストを作成するというアイデアでした。
ll:new() -> listId.
上記のListIdは、リスト上のある種のハンドルとして機能するCコードに返されるある種の「ポインター」を表します。リストが非常に大きくなる可能性があると想像していたので、リスト自体を前後に渡す必要がないことを望んでいました。リンクリストが作成されると、ユーザーは明白な方法でリストを操作します。
ll:add(ListId, Elt)
ll:add_after(ListId, Pos, Elt)
ErlangのNIF機能を介してこれを行うことを想像しました。これが機能するためには、C側は、add、add_afterなどの複数の呼び出しにわたってリストを維持する必要があります。
ストレートCでは、ユーザーが対話する主な機能があり、プログラムを存続させ、それによってユーザーがプログラムを対話している間、リンクリストを保持します。私が理解しているように、NIFは主な機能のないCコードを利用しています。つまり、NIFへの各呼び出しは1回限りのタイプの提案です。
誰かが私に(それが適切であると仮定して)どのようにNIFを利用して複数の呼び出しにわたって状態を維持する必要があるCコードと対話することができるかについてのいくつかの指針を教えてもらえますか?それが明確だったといいのですが!