То, что вы испытали, связано с рекурсивностью местных жителей в jsonnet.Таким образом, в local list = list + ['e']
список с правой стороны является тем же списком, что и с левой стороны, что приводит к бесконечной рекурсии при попытке его оценить.
Так что это будет работать так, как вы ожидаете:
local list = ['a', 'b', 'c'];
local list2 = list + ['e'];
На этот раз он правильно ссылается на ранее определенный список.
Если вам интересно, почему он был разработан таким образом, это полезно, поскольку означает, что вы можете писать рекурсивные функции:
local foo(x) = if x == 0 then [] else foo(x - 1) + [x];
foo(5)
Что в точности совпадает с написанием:
local foo = function(x) if x == 0 then [] else foo(x - 1) + [x];
foo(5)