- data Shell a
- shell :: a -> [Shell a] -> Shell a
- (<<|) :: Eq a => Shell a -> Shell a -> Bool
- couple :: Eq a => Shell a -> Shell a -> Bool
- dive :: Eq a => Shell a -> Shell a -> Bool
- data Homeomorphic k v
- empty :: Homeomorphic k v
- insert :: Ord k => Shell k -> v -> Homeomorphic k v -> Homeomorphic k v
- find :: Ord k => Shell k -> Homeomorphic k v -> [v]
- findOne :: Ord k => Shell k -> Homeomorphic k v -> Maybe v

# Documentation

The central data type. All data structures must be converted so they
consist of `Shell`

's, which split a value into a component at this
level and the children. Create a `Shell`

with `shell`

.

shell :: a -> [Shell a] -> Shell aSource

Create a value with a component at the current level and all the children.

data Homeomorphic k v Source

Datatype to store a homemorphic embedding.

empty :: Homeomorphic k vSource

An empty embedding

insert :: Ord k => Shell k -> v -> Homeomorphic k v -> Homeomorphic k vSource

Insert a new key (coded as a shell) and an associated value into an embedding.

find :: Ord k => Shell k -> Homeomorphic k v -> [v]Source

Does any relation xs <| y hold, given y.