Здравствуйте, Ikemefula, Вы писали:
I>Здравствуйте, samius, Вы писали:
S>>Конечно. Ты только сейчас оговорился, что это бывает уместно, а ты лишь про те кейсы, где это неуместно.
I>Вот такое, как ты показал, уместно в основном при портировании с другого функционального языка. А вот C# имеет кучу собственных вещей, которые позволяют эффективно работать со списками в функциональном стиле.
То, что я показал — уместно лишь для блога. А собственные вещи C# не дают гарантий, которые дают персистентные коллекции. Ты же сам примеры приводил изменяемой коллекции за неизменяемым фасадом.
I>>>Кроме того: I>>> — на кой ляд изобретат велосипед в ЯП с другой парадигмой, где вообще всё построено на других принципах ? S>>Что бы было чем воспользоваться, если, вдруг, понадобились принципы, отличные от безальтернативно предлагаемых в данном ЯП.
I>Ага, "на всякий случай"
I>Ага, "и так сойдёт"
Вполне ожидаемый уровень аргументации.
S>>Такое решение может давать гарантии, которых не может дать обычное решение.
I>Подробнее, какие именно гарантии, если компилер C# те самые гарантии не выдаёт.
Гарантии неизменяемости. С этим у компилера C# все не так плохо. Например, список, что я приводил, компилятор сломать не даст. I>До кучи, отламывается пошаговая отладка — становится неюзабельной, а так же и другие инструменты.
Куда это пошаговая отладка отломалась? И почему она стала неюзабельной? I> Например, автоматический рефакторинг сильно вряд ли сможет рефакторить твои наколеночные списков.
Какие проблемы с автоматическим рефакторингом?
>>Как следствие, упрощает проект. Конечно, я здесь не про всевозможные велосипеды, а за те, которые обладают некими полезными свойствами как персистентность.
I>Для персистентной модели в общем случае нужно гораздо больше, чем иммутабельные списки. Нужна вообще вся модель приложения персистентная, а следовательно, весь код который её использует, должен быть особенным.
Примерно таким же особенным, как код, использующий неизменяемые дотнетовские строки. Много ли твоих знакомых людей сломало голову о них?
I>Кроме того, если функционалист уходит, на его место надо внезапно искать нового функционалиста, да еще такого, что бы C# знал и умел на вышем уровне, что бы продраться через эти велосипеды. Тут уже звоночек и у ПМ, и у HR, и у заказчика.
Код, который я привел — навеян SICP-ом. Это вводный курс для программистов, рассчитанный на людей, которые к компу вообще не подходили ни разу. Замыкания там даются в первом семестре, если не ошибаюсь.
Звоночек у ПМ, HR и заказчиков должен взорваться от натуги, если они берут на C# программиста, не знакомого и не способного познакомиться с замыканием.