Здравствуйте, Mamut, Вы писали:
AA>>Ага, только если у вас появится новый тип, то придется пройти по всей программе и добавить в каждый матчинг новый кейс,
M>1. Не по всей M>2. Рефакторинг на то и рефакторинг
AA>>а в случае обобщенной функции(протоколы в кложе) достаточно добавить новую реализацию для данного типа, ни строчки не меняя в месте применения.
M>Повторю опять: в лиспе есть только обобщенные и весьма ограниченные мультиметоды. Не говоря уже о дикой многословности на ровном месте. Паттерн матчинг сильно шире только мультиметодов.
AA>>матчинг это связывание компонентов в спагетти, которое с успехом заменяется ифчиками.
M>Один и тот же человек на полном серьезе заявляет «паттерн-матчинг — по сути те же if'ы» и «матчинг это связывание компонентов в спагетти, которое с успехом заменяется ифчиками».
M>Ты уже определись, да. Если «паттерн-матчинг — по сути те же if'ы», то по твоей же логике if'ы точно так же «связывают компоненты в спагетти», как и pattern-matching.
M>Это если полностью пропустить то, что pattern-matching сильно мощнее if'ов.
Так я и имел ввиду, что если нужно захардкодить логику в одном месте, то матч ничем не лучше ифчиков, ну может лишь компайлер под это дело заточен.
С одной стороны хорошо, что компайлер все контролирует, с другой кодер привыкший к матчингу, работая над ифчиками может не заметить, что есть новый кейс.
Как ни крути матч или иф, все равно упираемся в опыт.