Marcinsの 3 つの質問に対する答えを見つけるのに時間がかかったので、ここで共有します。
JS で Opa タイプを使用する (カスタム Opa レコードを使用できますか?)
はい、可能です。「@opaType」を使用します。いくつかの opa ファイルでModel.graphを定義したと仮定しましょう
/**
* @opaType Model.graph
*/
/**
* @register {Model.graph -> void}
*/
function render(g) { ... }
リスト型の引数を使用する (Opa の {hd,tl} または {nil} から JS リストへの変換は、Opa bool={true} または {false} から JS ブール値へのように自動的に実行されますか?)
いいえ、リストの翻訳はありません (おそらくパフォーマンスのため?)。opa リストの JavaScript 表現:
{hd: {a: "1"}, tl: {hd: {a: "2"}, tl: {nil: {}}}}
JS 関数に引数として渡された Opa 関数の実行
それは再び可能です:
/**
* @register {string, (string -> void) -> void}
*/
function call_me_back(number, callback) {
callback(number);
}