erlang меняет веселую среду

Можно ли изменить переменные среды забавы erlang, не вмешиваясь в код, касающийся определения функции и лямбда-лифтинга?

В частности, я хотел бы явно изменить pid (‹12036.69.0>) в env развлечения, в котором есть эта информация:

[{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}]

Неважно, что делает забава, так как я хочу, чтобы это решение было общим, которое просто меняет все pids в окружении забавы.


person Panagiotis Fytas    schedule 12.06.2018    source источник
comment
Основываясь на нашем личном обсуждении, я думаю, что вам нужен просто способ создать новое развлечение в измененной среде.   -  person aronisstav    schedule 13.06.2018


Ответы (1)


Нет, это нарушило бы свойство ссылочной прозрачности забавы как постоянное значение. Это ничем не отличается от обновления поля кортежа, и такое деструктивное изменение может даже привести к падению сборщика мусора, потому что оно нарушает внутренние предположения о направлениях указателей.

person RichardC    schedule 12.06.2018
comment
Знаете ли вы альтернативный способ получения абстрактного кода функции, поскольку в данном случае он не появляется как часть среды? - person Panagiotis Fytas; 12.06.2018
comment
Если модуль скомпилирован с флагом debug_info, вы можете извлечь эту информацию позже из фрагмента в файле луча. Он содержит все расширенное синтаксическое дерево модуля. - person RichardC; 12.06.2018
comment
Я добавил в вопрос другое измерение: как можно создать новое развлечение с обновленным окружением? - person aronisstav; 13.06.2018