Partible

From HaskellWiki
Revision as of 01:24, 8 April 2021 by Atravers (talk | contribs) (Initial content, loosely based on "Monad")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Hint: if you're just looking for an introduction to partible types, see Plainly partible.

The Partible class

Partible types have an common (and austere) programming interface, this being captured by the Partible class:

class Partible a where
  part :: a -> (a, a)
  parts :: a -> [a]

   -- minimal complete definition: part or parts --
  part u = case parts u of u1:u2:_ -> (u1, u2)
  parts u = case part u of (u1, u2) -> u1 : parts u2

In addition to implementing the methods of the class, partible types should satisfy certain equations; for an explanation of them along with why they should be satisfied, see Partible laws.