Есть ли общепринятое имя для этого типа перечисляемой операции?

Мне часто приходится обходить деревья иерархических объектов и выполнять операции с каждым элементом на этом пути. Есть ли общепринятое название для такого рода операции в языке понимания списков? Я спрашиваю, потому что помню, как впервые узнал о функции zip в python еще до того, как у нее был эквивалент в платформе .net, и подумал, что у нее необычное, но подходящее имя.

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

public static IEnumerable Ancestors(T source, Func selector)
{
    do
    {
        yield return source;
        source = selector(source);
    } while (!Equals(source, default(T)));
}

public static IEnumerable Descendents(T source,
                                            Func> selector)
{
    var stack = new Stack();
    stack.Push(source);
    while (stack.Count > 0)
    {
        source = stack.Pop();
        yield return source;
        var items = selector(source);
        if (items != null)
        {
            foreach (var item in items)
            {
                stack.Push(item);
            }
        }
    }
}

6
задан Nathan Baulch 23 June 2011 в 07:43
поделиться