Re[6]: вопрос к специалистам
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.02.10 16:39
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Мне совсем не обязательно нужно обработать их все.


Это вопрос взглядов на алгоритмы.

PD>Даже банальный Search в BST просматривает только Log N. Впрочем, его мы уже обсудили, там вообще проход по списку, а не по дереву. Но и в других случаях обработка всех не нужна. Впрочем, это не так важно.


Дык, а что нужно? Обычно нужно найти некоторые элементы отвечающие критерию. Для этого можно воспользоваться теми же методами Where или First. Ну, а чтобы они не делали полный перебор написать специализированную версию использующую поиск по ключу.

PD>А все же, можешь что-то сказать насчет SearchAndInsert в BST ?


Таких методов нет ни в одной дотной дотнетной коллекции, так что сказать про него я ничего не могу.

Но могу сказать, что ты мыслишь одной записью (так скажем). Ты не думаешь в терминах преобразований, а ФП рассчитан как раз на такое мышление.

Когда кто-то использует функциональный стиль, то он вместо возни с одним элементов отчирает их группу и вдет работу с ней. При этом отобранная группа обычно помещается в новую коллекцию.

PD> То есть вроде как запрос, но в самый интересный момент он превращается во вставку, тут же, по ходу действия, а потом опять в запрос (при отсутствии вставить и вернуть) ? Вариант с, как ты пишешь, "вводить новые копируя в них информацию из старых и меняя нужные подэлементы", тут вроде как не проходит.


Тут никаких запросов нет. Это вообще какой-то изврат — тандем двух методов. Причем методов (по всей видимости) работающих с отдельными элементами. А тут линк не к чему. Линк он нужен чтобы не возиться с отдельными элементами, а работать с их группами.

PD>Хм... Ну ладно. Хотя вроде как выносить мелкие алгоритмы в отдельные функции мы и так умели давно. И даже передавать им в качестве параметров иные функции, хоть и не лямбды.


Ну, значит ты давно пользовался ФП не подозревая об этом. Хотя более правдоподобным выглядит предположение о том, что ты преувеличиваешь.

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

PD>ИМХО все же дерево — это дерево, а не последовательность. Линейный и разветвленные структуры — это все же не одно и то же, принципиально. Так следующим шагом ты и граф в последовательность превратишь Конечно, я говорю о самой структуре, а не о результате ее сериализации.


Ну, ты уж как-то давай сам решай. Или ты задаешь вопросы и получаешь ответы, или ты уже сам все решил, но тогда не стоит задавать вопросы.

Твое ИМПХО базируется на старых привычках. У меня было тоже самое, но я сумел перестроиться. Попробуй и ты. Не выйдет, значит и дальше ничего в линке не будешь видеть. В принципе не проблема. На циклах тоже можно программировать. Несколько медленнее конечно, но не смертельно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.