darcs-2.11.0: a distributed, interactive, smart revision control system

Safe HaskellNone

Darcs.Patch.Witnesses.Eq

Synopsis

Documentation

data EqCheck wA wB where

EqCheck is used to pass around evidence (or lack thereof) of two witness types being equal.

Constructors

IsEq :: EqCheck wA wA 
NotEq :: EqCheck wA wB 

Instances

Eq (EqCheck wA wB) 
Show (EqCheck wA wB) 

class MyEq p where

An witness aware equality class. A minimal definition defines any one of unsafeCompare, =\/= and =/\=.

Methods

unsafeCompare :: p wA wB -> p wC wD -> Bool

It is unsafe to define a class instance via this method, because if it returns True then the default implementations of =\/= and =/\= will coerce the equality of two witnesses.

Calling this method is safe, although =\/= or =/\= would be better choices as it is not usually meaningul to compare two patches that don't share either a starting or an ending context

(=\/=) :: p wA wB -> p wA wC -> EqCheck wB wC

Compare two things with the same starting witness. If the things compare equal, evidence of the ending witnesses being equal will be returned.

(=/\=) :: p wA wC -> p wB wC -> EqCheck wA wB

Compare two things with the same ending witness. If the things compare equal, evidence of the starting witnesses being equal will be returned.

Instances

isIsEq :: EqCheck wA wB -> Bool