Algebraický datový typ

Algebraický datový typ je složený datový typ umožňující skládání pomocí algebraických operací součtu a součinu. Příkladem součinu typů jsou datové záznamy a struktury:

record Person where
  name : String
  age  : Int

Příkladem součtu typů je například monáda s prázdnou hodnotou:

data Maybe : (a : Type) -> Type where
  Nothing  : Maybe a
  Just     : a -> Maybe a

Součin typů odpovídá logické konjunkci a součet disjunkci, čehož lze využít v jazycích jako Agda, Coq nebo Idris k formální verifikaci kódu. Algebraické datové typy tvoří polookruh, je proto možné definovat nad nimi například operaci derivování.

Zobecněné algebraické datové typy

Některé jazyky, například Idris a OCaml, mají takzvané zobecněné algebraické typy, v nichž můžou mít datové konstruktory různé výsledné typy, například:

data Even : Nat -> Type where
  EvenZ  : Even 0
  EvenSS : Even n -> Even (2+n)

Zobecněné datové typy je také možné použití jako existenciální typy v heterogenních datových kolekcích.

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.