-- | -- Module : ELynx.Tree.Splittable -- Description : Splittable branch labels -- Copyright : (c) Dominik Schrempf, 2021 -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com -- Stability : unstable -- Portability : portable -- -- Creation date: Sat Jul 18 13:52:22 2020. module ELynx.Tree.Splittable ( Splittable (..), ) where -- | A data type that can be split into two equal entities. -- -- For 'Semigroup's, the following equality should hold: -- -- @ -- split x <> split x = x -- @ class Splittable e where split :: e -> e instance Splittable () where split :: () -> () split = () -> () forall a. a -> a id