hiraffe
Copyright(C) Frank Staals
Licensesee the LICENSE file
MaintainerFrank Staals
Safe HaskellNone
LanguageGHC2021

Hiraffe.PlanarGraph.Dart

Description

Data type for representing Darts (edges) in a planar graph.

Synopsis

Documentation

data Dart (s :: k) Source #

A dart represents a bi-directed edge. I.e. a dart has a direction, however the dart of the oposite direction is always present in the planar graph as well.

Constructors

Dart !(Arc s) !Direction 

Instances

Instances details
NFData (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

rnf :: Dart s -> () #

Enum (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

succ :: Dart s -> Dart s #

pred :: Dart s -> Dart s #

toEnum :: Int -> Dart s #

fromEnum :: Dart s -> Int #

enumFrom :: Dart s -> [Dart s] #

enumFromThen :: Dart s -> Dart s -> [Dart s] #

enumFromTo :: Dart s -> Dart s -> [Dart s] #

enumFromThenTo :: Dart s -> Dart s -> Dart s -> [Dart s] #

Generic (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Associated Types

type Rep (Dart s) 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep (Dart s) = D1 ('MetaData "Dart" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'False) (C1 ('MetaCons "Dart" 'PrefixI 'True) (S1 ('MetaSel ('Just "_arc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Arc s)) :*: S1 ('MetaSel ('Just "_direction") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Direction)))

Methods

from :: Dart s -> Rep (Dart s) x #

to :: Rep (Dart s) x -> Dart s #

Show (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

showsPrec :: Int -> Dart s -> ShowS #

show :: Dart s -> String #

showList :: [Dart s] -> ShowS #

Eq (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

(==) :: Dart s -> Dart s -> Bool #

(/=) :: Dart s -> Dart s -> Bool #

Ord (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

compare :: Dart s -> Dart s -> Ordering #

(<) :: Dart s -> Dart s -> Bool #

(<=) :: Dart s -> Dart s -> Bool #

(>) :: Dart s -> Dart s -> Bool #

(>=) :: Dart s -> Dart s -> Bool #

max :: Dart s -> Dart s -> Dart s #

min :: Dart s -> Dart s -> Dart s #

type Rep (Dart s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep (Dart s) = D1 ('MetaData "Dart" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'False) (C1 ('MetaCons "Dart" 'PrefixI 'True) (S1 ('MetaSel ('Just "_arc") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 (Arc s)) :*: S1 ('MetaSel ('Just "_direction") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Direction)))

arc :: forall {k} (s :: k) f. Functor f => (Arc s -> f (Arc s)) -> Dart s -> f (Dart s) Source #

Arc lens.

direction :: forall {k} (s :: k) f. Functor f => (Direction -> f Direction) -> Dart s -> f (Dart s) Source #

Direction lens.

twin :: forall {k} (s :: k). Dart s -> Dart s Source #

Get the twin of this dart (edge)

>>> twin (dart 0 "+1")
Dart (Arc 0) -1
>>> twin (dart 0 "-1")
Dart (Arc 0) +1

isPositive :: forall {k} (s :: k). Dart s -> Bool Source #

test if a dart is Positive

asPositive :: forall {k} (s :: k). Dart s -> Dart s Source #

Returrns the psoitive version of this this ard.

allDarts :: forall {k} (s :: k). [Dart s] Source #

Enumerates all darts such that allDarts !! i = d = i == fromEnum d

newtype Arc (s :: k) Source #

An Arc is a directed edge in a planar graph. The type s is used to tie this arc to a particular graph.

Constructors

Arc Int 

Instances

Instances details
NFData (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

rnf :: Arc s -> () #

Bounded (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

minBound :: Arc s #

maxBound :: Arc s #

Enum (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

succ :: Arc s -> Arc s #

pred :: Arc s -> Arc s #

toEnum :: Int -> Arc s #

fromEnum :: Arc s -> Int #

enumFrom :: Arc s -> [Arc s] #

enumFromThen :: Arc s -> Arc s -> [Arc s] #

enumFromTo :: Arc s -> Arc s -> [Arc s] #

enumFromThenTo :: Arc s -> Arc s -> Arc s -> [Arc s] #

Generic (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Associated Types

type Rep (Arc s) 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep (Arc s) = D1 ('MetaData "Arc" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'True) (C1 ('MetaCons "Arc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

Methods

from :: Arc s -> Rep (Arc s) x #

to :: Rep (Arc s) x -> Arc s #

Show (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

showsPrec :: Int -> Arc s -> ShowS #

show :: Arc s -> String #

showList :: [Arc s] -> ShowS #

Eq (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

(==) :: Arc s -> Arc s -> Bool #

(/=) :: Arc s -> Arc s -> Bool #

Ord (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

compare :: Arc s -> Arc s -> Ordering #

(<) :: Arc s -> Arc s -> Bool #

(<=) :: Arc s -> Arc s -> Bool #

(>) :: Arc s -> Arc s -> Bool #

(>=) :: Arc s -> Arc s -> Bool #

max :: Arc s -> Arc s -> Arc s #

min :: Arc s -> Arc s -> Arc s #

type Rep (Arc s) Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep (Arc s) = D1 ('MetaData "Arc" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'True) (C1 ('MetaCons "Arc" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Int)))

data Direction Source #

Darts have a direction which is either Positive or Negative (shown as +1 or -1, respectively).

Constructors

Negative 
Positive 

Instances

Instances details
NFData Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Methods

rnf :: Direction -> () #

Bounded Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Enum Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Generic Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Associated Types

type Rep Direction 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep Direction = D1 ('MetaData "Direction" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'False) (C1 ('MetaCons "Negative" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Positive" 'PrefixI 'False) (U1 :: Type -> Type))
Read Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Show Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Eq Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

Ord Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep Direction Source # 
Instance details

Defined in Hiraffe.PlanarGraph.Dart

type Rep Direction = D1 ('MetaData "Direction" "Hiraffe.PlanarGraph.Dart" "hiraffe-0.1-inplace" 'False) (C1 ('MetaCons "Negative" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Positive" 'PrefixI 'False) (U1 :: Type -> Type))

rev :: Direction -> Direction Source #

Reverse the direcion