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, search

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.