да не, могут и работать. можно заменить на {m, f} и явный контекст.
хотя, какая разница, что мне мешает скрафтить %Stream{mf: {:erlang, :apply}, state: #Fun<>}
Костыли какие-то. Ленивые последовательности нужны.
Изначально проблема была из-за того, что ETF был использован как формат обмена, при том что он позволяет указывать исполняемый код. Есть JSON, есть protobuf, поэтому данный выбор попросту неправилен.