Почему аргументы функций — не «цвета функций»
Function Arguments Are Not Function Colors
В статье разбирается популярная аналогия «цветов функций» из эссе 2015 года и опровергается утверждение, что аргументы функций (например, context.Context в Go) можно считать такими же «цветами». Автор предлагает формальный критерий: «цвет» — это изменение, которое при распространении вверх по стеку вызовов не может быть инкапсулировано промежуточными функциями, в отличие от обычных изменений параметров. На примерах Go, JavaScript и Haskell (STM) показано, что асинхронность не всегда является «цветом», а аргументы — почти никогда.
Любое изменение функции с «цветной» формой зависимостей — это цвет; любое изменение функции, имеющее форму связного списка, — не цвет.