compdata-0.11: Compositional Data Types

Copyright(c) 2010-2011 Patrick Bahr
LicenseBSD3
MaintainerPatrick Bahr <paba@diku.dk>
Stabilityexperimental
Portabilitynon-portable (GHC Extensions)
Safe HaskellNone
LanguageHaskell98

Data.Comp.Equality

Contents

Description

This module defines equality for signatures, which lifts to equality for terms and contexts.

Synopsis

Documentation

class EqF f where Source #

Signature equality. An instance EqF f gives rise to an instance Eq (Term f).

Minimal complete definition

eqF

Methods

eqF :: Eq a => f a -> f a -> Bool Source #

eqMod :: (EqF f, Functor f, Foldable f) => f a -> f b -> Maybe [(a, b)] Source #

This function implements equality of values of type f a modulo the equality of a itself. If two functorial values are equal in this sense, eqMod returns a Just value containing a list of pairs consisting of corresponding components of the two functorial values.

Orphan instances

EqF [] Source # 

Methods

eqF :: Eq a => [a] -> [a] -> Bool Source #

EqF Maybe Source # 

Methods

eqF :: Eq a => Maybe a -> Maybe a -> Bool Source #

Eq a0 => EqF ((,) a0) Source # 

Methods

eqF :: Eq a => (a0, a) -> (a0, a) -> Bool Source #

(Eq a0, Eq b0) => EqF ((,,) a0 b0) Source # 

Methods

eqF :: Eq a => (a0, b0, a) -> (a0, b0, a) -> Bool Source #

EqF f => EqF (Cxt h f) Source # 

Methods

eqF :: Eq a => Cxt h f a -> Cxt h f a -> Bool Source #

(EqF f, Eq a) => Eq (Cxt h f a) Source #

From an EqF functor an Eq instance of the corresponding term type can be derived.

Methods

(==) :: Cxt h f a -> Cxt h f a -> Bool #

(/=) :: Cxt h f a -> Cxt h f a -> Bool #

(Eq a0, Eq b0, Eq c0) => EqF ((,,,) a0 b0 c0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, a) -> (a0, b0, c0, a) -> Bool Source #

(EqF f, EqF g) => EqF ((:+:) * f g) Source #

EqF is propagated through sums.

Methods

eqF :: Eq a => (* :+: f) g a -> (* :+: f) g a -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0) => EqF ((,,,,) a0 b0 c0 d0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, a) -> (a0, b0, c0, d0, a) -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0, Eq e0) => EqF ((,,,,,) a0 b0 c0 d0 e0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, e0, a) -> (a0, b0, c0, d0, e0, a) -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0, Eq e0, Eq f0) => EqF ((,,,,,,) a0 b0 c0 d0 e0 f0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, e0, f0, a) -> (a0, b0, c0, d0, e0, f0, a) -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0, Eq e0, Eq f0, Eq g0) => EqF ((,,,,,,,) a0 b0 c0 d0 e0 f0 g0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, e0, f0, g0, a) -> (a0, b0, c0, d0, e0, f0, g0, a) -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0, Eq e0, Eq f0, Eq g0, Eq h0) => EqF ((,,,,,,,,) a0 b0 c0 d0 e0 f0 g0 h0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, e0, f0, g0, h0, a) -> (a0, b0, c0, d0, e0, f0, g0, h0, a) -> Bool Source #

(Eq a0, Eq b0, Eq c0, Eq d0, Eq e0, Eq f0, Eq g0, Eq h0, Eq i0) => EqF ((,,,,,,,,,) a0 b0 c0 d0 e0 f0 g0 h0 i0) Source # 

Methods

eqF :: Eq a => (a0, b0, c0, d0, e0, f0, g0, h0, i0, a) -> (a0, b0, c0, d0, e0, f0, g0, h0, i0, a) -> Bool Source #