2

是否可以在不干扰有关函数定义和 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}]

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

4

1 回答 1

3

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

于 2018-06-12T13:40:22.727 回答