Здравствуйте, Ikemefula, Вы писали:
S>>То, что я показал — уместно лишь для блога. А собственные вещи C# не дают гарантий, которые дают персистентные коллекции. Ты же сам примеры приводил изменяемой коллекции за неизменяемым фасадом.
I>Цитирую себя "К сожалению, именно такой код часто и пишут функционалисты и называют это "красиво". Я даже видел библиотеки всерьёз написаные в подобном стиле на C# и даже на JS "
I>Далее, ты начал защищать тех самый функционалистов
а потом "уместно лишь для блога"
I>Определись уже, для блоги или уместно в продакше.
Конкретный мой код — и "библиотеки всерьёз написаные в подобном стиле".. Мы явно о разных вещах говорим.
I>>>Ага, "на всякий случай"
I>>>Ага, "и так сойдёт"
S>>Вполне ожидаемый уровень аргументации.
I>Добавь сюда "уместно лишь для блога" Это сумма твоих высказываний.
Одно из. Остальные ты не заметил на фоне этого.
I>>> Например, автоматический рефакторинг сильно вряд ли сможет рефакторить твои наколеночные списков.
S>>Какие проблемы с автоматическим рефакторингом?
I>Например, я хочу заменять цепочку эквивалентным кодом.
Странное требование к коду, ну да ладно. В продакшне список дополняется на раз двумя методами в/из IEnumerable. Если работа рефакторингом с IEnumerable тебя устраивает, то проблем не вижу более.
I>>>Для персистентной модели в общем случае нужно гораздо больше, чем иммутабельные списки. Нужна вообще вся модель приложения персистентная, а следовательно, весь код который её использует, должен быть особенным.
S>>Примерно таким же особенным, как код, использующий неизменяемые дотнетовские строки. Много ли твоих знакомых людей сломало голову о них?
I>Если ты про IImmutableList, то это используется местечково. Я как то не встречал больших приложений, что бы вся модель была персистентая, обычно толко кое какие части.
Определись, нужно или не нужно? Может быть достаточно местячково, там, где это действительно нужно?
I>Сможешь сходу представить, как будет выглядеть персистетный аналог DOM ? html dom, xml dom, etc dom и как будет выглядеть код вида "удалить элементы в поддереве по признаку xxx"? И далее, как будет выглядеть вызывающий код.
Код вида "удалить элементы в поддереве по признаку xxx" будет выглядеть не сложнее, чем фильтрация IEnumerable в Linq.
S>>Код, который я привел — навеян SICP-ом. Это вводный курс для программистов, рассчитанный на людей, которые к компу вообще не подходили ни разу. Замыкания там даются в первом семестре, если не ошибаюсь.
I>ОМГ! Что бы понимать твой код надо гораздо больше, чем замыкания. Нужно уметь все алгоритмы, которые только встретятся в проекте, перепилить на вот эту модель. В универах этому почти не учат.
В сикпе этот код понимают студенты, которые кроме факториала и метода Ньютона ничего не видели. Какие там еще все алгоритмы проекта, который они еще не писали?
S>>Звоночек у ПМ, HR и заказчиков должен взорваться от натуги, если они берут на C# программиста, не знакомого и не способного познакомиться с замыканием.
I>Cостояние нынешнего рынка труда не в твою пользу. 80% задач на любом проекте — рутина, простые задачи. Потому и берут тех, что дешевле. А вот оставшие 20% нужно написать так, что бы эти более дешовые смогли понимать и майнтейнить.
Те места, где берут тех, кто дешевле, меня не очень интересуют. Пользуйся.