Главная » Haskell » Модуль Version

0

 является общим модулем для решения вопросов генерации и представления  номеров версий программного обеспечения  (либо чего-нибудь  ещё, что может иметь версии). Использование:

import Data.Version

Различных схем наименования версий существует много. Поэтому  способ представления  номеров версий, предлагаемый  в этом модуле, является компромиссом между произвольной схемой, для которой  невозможно предусмотреть какую-либо  функциональность, и  фиксированной схемой, которая  может быть достаточно ограниченной.

Таким образом, в этом модуле предлагается схема наименования номеров версий, которая обобщает многие схемы. К тому же к ней предлагается возможность сравнения, установления порядка версий, а  также  проведения преобразований в строку и из строки.

Тип: Version

Описание: тип для представления  версий. Хранит дерево подверсий,  а  также произвольное количество меток к версии.

Определение:

data  Version

=  Version

{

versionBranch ::  [Int] versionTags      :: [String]

}

Элемент versionBranch представляет собой список целых чисел, представляющих версию. Обычно версии нумеруются при помощи древовидной структуры. Существует главная ветвь разработки, от которой могут отходить побочные ветви. Например, первая побочная ветвь третьей версии имеет номер «3.1» и т. д. Та-

кие ветви представляются списком целых чисел в непосредственном лексикографическом порядке. Поэтому версия «3.5.14» представляется списком [3, 5,  14].

Также  версии могут быть помечены произвольным количеством  строковых меток. Для хранения таких меток существует элемент versionTags.  Интерпретация этих меток возложена на тех, кто использует этот тип данных для работы с номерами версий.

Для типа Version определены экземпляры следующих классов: Eq, Ord, Read,

Show и Typeable.

Функция: showVersion

Описание: преобразует версию в строковое представление.  Например, для версии с номером [1, 2,  3] и метками ["tag1",  "tag2"] строковое представление будет "1.2.3-tag1-tag2".

Определение:

showVersion  ::  Version ->  String

showVersion  (Version branch  tags) = concat  (intersperse "." (map show  branch)) ++ concatMap (’-’:) tags

Функция: parseVersion

Описание: преобразует строку в формате, предлагаемом функцией showVersion, в представление версии типа Version.

Определение:

parseVersion ::  ReadP  Version

parseVersion = do branch  < sepBy1 (liftM read  $ munch1  isDigit)  (char ’.’) tags      < many (char ’-’ >> munch1  isAlphaNum)

return  Version{versionBranch = branch, versionTags   = tags}

Источник: Душкин Р. В., Справочник по языку Haskell. М.: ДМК Пресс, 2008. 544 с., ил.

По теме:

  • Комментарии