erlang 改变一个有趣的环境

erlang change a fun environment

是否可以在不干扰有关函数定义和 lambda 提升的代码的情况下更改 erlang fun 的环境变量?

具体来说,我想在具有以下信息的娱乐环境中显式更改 pid(<12036.69.0>):

[{pid,<12036.68.0>},
 {module,expl},
 {new_index,7},
 {new_uniq,<<197,235,209,205,33,163,202,255,8,58,234,128,135,166,147,185>>},
 {index,7},
 {uniq,103767694},
 {name,'-test_no_pid/0-fun-1-'},
 {arity,0},
 {env,[<12036.69.0>]},
 {type,local}]

乐趣做什么并不重要,因为我希望这个解决方案是一个通用的解决方案,它只更改乐趣环境中的所有 pid。

不,这会破坏 fun 作为常量值的引用透明性 属性。这与更新元组的字段没有什么不同,这种破坏性的变化甚至可能使垃圾收集器崩溃,因为它违反了关于指针方向的内部假设。