понедельник, 16 мая 2011 г.

Pattern matching в Nemerle

Одна из самых интересных фич Nemerle это pattern matching. К сожалению, программисты видящие его впервые, испытывают некий культурный шок. Регулярно сталкиваясь с убеждением, что pattern matching это страшная космическая технология, я решил немного развеять этот миф. Статья будет вводная, не планирующая покрыть все тонкости PM, ее цель всего лишь дать начальное понимание. Я сознательно опускаю некоторые функциональные тонкости, чтобы облегчить понимание программистам с императивным бэкграундом.

Смысл конструкции match в nemerle - выбрать одно и только одно из действий на основе значения выражения. Общий синтаксис таков:
match (expression)
{
  | pattern1 => action1
  | pattern2 => action2
  ...
  | patternN => actionN
}

Пользуясь тем, что PM одинаково легко покрывает и простые и сложные сценарии использования, рассмотрим приемы его применения от простого к сложному.

Самый простой сценарий это switch. Pattern matching покрывает его практически идентично.