Сопоставление с образцом
Sep. 20th, 2012 01:41 amНе могу понять, почему мейнстримовые языки программирования так открещиваются от паттерн-матчинга? Как не могу понять отсутствие алгебраических типов. Вещи-то очень понятные, логичные и легко реализуемые. В ентих наших дотнетах делают один абстрактный базовый класс и несколько sealed потомков и вуаля. Да и в книжках про паттерны проектирования пишут, что широкие неглубокие иерархии - хорошо, а наоборот - плохо. И, как мне представляется, очень лаконично АТД ложатся на ООП модель, то есть в F#/Nemerle очень удобно, все пользуются, довольные. К тому же енти match'и столько всего умеют, что всякие if/switch/when становятся не нужны. Думаю, любой решивший посмотреть, что там за ФП такое, моментально проникается и потом остро чувствует нехватку и матча и типов-вариантов. Но вот в мейнстриме как-то не, что си-плеяда, что пыхо-плеяда в это не могут, а жаль. И непонятно. Ведь авторы, Хейльсберг какой или Гвидо, должно быть, умнейшие люди, они точно должны быть в курсе про АТД и сопоставление, вещи-то не первой свежести, как и дожны иметь какие-то аргументы, почему "нинужна". Может, кто подскажет, где почитать можно, а то сам ничего внятного найти не смог?
А еще часто пишут, что паттерн-матчинг - енто такой свитч на стероидах. Но, имхо, основная идея матча - разбор структуры и связывавание значений с именами, а свич на стероидах - это друго. Под катом то, как представляю себе енто я. По крайней мере, я ничего лучшепридумать написать на сишарпе не смог, а так хочется.
( свич на стероидах )
Я поехал, да?
А еще часто пишут, что паттерн-матчинг - енто такой свитч на стероидах. Но, имхо, основная идея матча - разбор структуры и связывавание значений с именами, а свич на стероидах - это друго. Под катом то, как представляю себе енто я. По крайней мере, я ничего лучше
( свич на стероидах )
Я поехал, да?