darcs

Safe HaskellSafe-Infered

Darcs.Witnesses.Eq

Synopsis

Documentation

data EqCheck where

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

Constructors

IsEq :: EqCheck 
NotEq :: EqCheck 

Instances

class MyEq p where

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

Methods

unsafeCompare :: p -> p -> 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 -> p -> EqCheck

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

(=/\=) :: p -> p -> EqCheck

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

Instances

MyEq DirPatchType 
MyEq FilePatchType 
MyEq Prim 
MyEq WPatchInfo 
MyEq DummyPatch 
(MyEq p, Commute p) => MyEq (RL p) 
(MyEq p, Commute p) => MyEq (FL p) 
MyEq prim => MyEq (Patch prim) 
(Commute p, MyEq p) => MyEq (Named p) 
(Commute p, MyEq p) => MyEq (PatchInfoAnd p) 
MyEq p => MyEq (PatchChoice p) 
MyEq p => MyEq (TaggedPatch p) 
PrimPatch prim => MyEq (RealPatch prim) 
(MyEq a, MyEq b) => MyEq (:< a b) 
(MyEq a, MyEq b) => MyEq (:> a b)