Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Мне совсем не обязательно нужно обработать их все.
Это вопрос взглядов на алгоритмы.
PD>Даже банальный Search в BST просматривает только Log N. Впрочем, его мы уже обсудили, там вообще проход по списку, а не по дереву. Но и в других случаях обработка всех не нужна. Впрочем, это не так важно.
Дык, а что нужно? Обычно нужно найти некоторые элементы отвечающие критерию. Для этого можно воспользоваться теми же методами Where или First. Ну, а чтобы они не делали полный перебор написать специализированную версию использующую поиск по ключу.
PD>А все же, можешь что-то сказать насчет SearchAndInsert в BST ?
Таких методов нет ни в одной дотной дотнетной коллекции, так что сказать про него я ничего не могу.
Но могу сказать, что ты мыслишь одной записью (так скажем). Ты не думаешь в терминах преобразований, а ФП рассчитан как раз на такое мышление.
Когда кто-то использует функциональный стиль, то он вместо возни с одним элементов отчирает их группу и вдет работу с ней. При этом отобранная группа обычно помещается в новую коллекцию.
PD> То есть вроде как запрос, но в самый интересный момент он превращается во вставку, тут же, по ходу действия, а потом опять в запрос (при отсутствии вставить и вернуть) ? Вариант с, как ты пишешь, "вводить новые копируя в них информацию из старых и меняя нужные подэлементы", тут вроде как не проходит.
Тут никаких запросов нет. Это вообще какой-то изврат — тандем двух методов. Причем методов (по всей видимости) работающих с отдельными элементами. А тут линк не к чему. Линк он нужен чтобы не возиться с отдельными элементами, а работать с их группами.
PD>Хм... Ну ладно. Хотя вроде как выносить мелкие алгоритмы в отдельные функции мы и так умели давно. И даже передавать им в качестве параметров иные функции, хоть и не лямбды.
Ну, значит ты давно пользовался ФП не подозревая об этом. Хотя более правдоподобным выглядит предположение о том, что ты преувеличиваешь.
Функцию ты может и мог передать, но без замыканий толку от этого не много. Ведь для вынесения алгоритма уровня цикла в отдельную функцию нужно в эту функцию передавать контекст вычислений. А без замыканий это сделать невозможно.
PD>ИМХО все же дерево — это дерево, а не последовательность. Линейный и разветвленные структуры — это все же не одно и то же, принципиально. Так следующим шагом ты и граф в последовательность превратишь
Конечно, я говорю о самой структуре, а не о результате ее сериализации.
Ну, ты уж как-то давай сам решай. Или ты задаешь вопросы и получаешь ответы, или ты уже сам все решил, но тогда не стоит задавать вопросы.
Твое ИМПХО базируется на старых привычках. У меня было тоже самое, но я сумел перестроиться. Попробуй и ты. Не выйдет, значит и дальше ничего в линке не будешь видеть. В принципе не проблема. На циклах тоже можно программировать. Несколько медленнее конечно, но не смертельно.