Мохнатые уроды и моральные пёзды. Войти !bnw Сегодня Клубы
> Mapping nodes are somewhat tricky because their keys are unordered and must be unique. > Note that the YAML graph may include cycles, and a node may have more than one incoming edge. А если ключ карты имеет сложную структуру и ссылается на родительский узел? Прямо Хаскель какой–то
Рекомендовали: @goren
#O228V8 / @octagram / 4459 дней назад

Круто же. Я думаю написать что-нибудь на хацкеле с конфигами в ямле.
#O228V8/8BU / @goren / 4459 дней назад
По законам обычной логики и по определению Equality в спецификации YAML получается, что любой зацикленный на себя элемент будет не равен самому себе. Так происходит, потому что определения написаны, используя "only when". Чтобы было круто, определения должны быть написаны от противного.
#O228V8/V05 / @octagram / 4459 дней назад
Пожалуй, я бы даже мог написать алгоритм сравнения рекурсивных объектов, если бы определение было написано методом «от противного». Для этого нужно поиском в глубину начать прочёсывать объект и при обнаружении уже пройденного в текущем стеке вызовов узла вместо узла оставлять число со специальным, ничему другому не равным тегом. Число должно быть равно количеству уровней, на которое нужно подняться вверх по стеку вызовов, чтобы встретить этот узел. Максимальный уровень вложенности получается равным количеству узлов в графе, то есть, конечен. Если учитывать в равенстве топологию, то теперь можно и сравнить два дерева обычным способом. Но это будет дополнительная модификация определения. Если же просто написать определение от противного, то &self [ 2, *self, *self ] и &self [ 2, &deeper [ 2, *deeper, *self ], *deeper ] будут равны, хотя топология разная. В этом случае тоже поиском в глубину делаем сравнение, и каждый раз, как возникает вопрос о равенстве двух узлов графа, и этот вопрос уже поднимался в рамках текущего стека вызовов, он автоматически считается истиной, но стек не раскручивается, сравнение продолжается на соседних элементах. Максимальная глубина вызова — квадрат количества узлов в графе.
#O228V8/QHH / @octagram / 4459 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.