{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE EmptyDataDecls #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
{-# OPTIONS_GHC -fno-warn-orphans #-}
module Diagrams.Core.Types
(
Annotation(Href, OpacityGroup, KeyVal)
, applyAnnotation, href, opacityGroup, groupOpacity, keyVal
, UpAnnots, DownAnnots, transfToAnnot, transfFromAnnot
, QDiaLeaf(..), withQDiaLeaf
, QDiagram(..), Diagram
, mkQD, mkQD', pointDiagram
, envelope, trace, subMap, names, query
, atop
, nameSub
, lookupName
, withName
, withNameAll
, withNames
, localize
, setEnvelope
, setTrace
, Subdiagram(..), mkSubdiagram
, getSub, rawSub
, location
, subPoint
, SubMap(..)
, fromNames, rememberAs, lookupSub
, Prim(..)
, _Prim
, Backend(..)
, DTree
, DNode(..)
, RTree
, RNode(..)
, _RStyle
, _RAnnot
, _RPrim
, _REmpty
, NullBackend, D
, TypeableFloat
, Renderable(..)
) where
import Control.Arrow (first, second, (***))
import Control.Lens (Lens', Prism', Rewrapped,
Wrapped (..), iso, lens, over,
prism', view, (^.), _Wrapped,
_Wrapping)
import Control.Monad (mplus)
import Data.List (isSuffixOf)
import qualified Data.Map as M
import Data.Maybe (fromMaybe, listToMaybe)
import Data.Semigroup
import qualified Data.Traversable as T
import Data.Tree
import Data.Typeable
import Data.Monoid.Action
import Data.Monoid.Coproduct
import Data.Monoid.Deletable
import Data.Monoid.MList
import Data.Monoid.WithSemigroup
import qualified Data.Tree.DUAL as D
import Diagrams.Core.Envelope
import Diagrams.Core.HasOrigin
import Diagrams.Core.Juxtapose
import Diagrams.Core.Names
import Diagrams.Core.Points
import Diagrams.Core.Query
import Diagrams.Core.Style
import Diagrams.Core.Trace
import Diagrams.Core.Transform
import Diagrams.Core.V
import Linear.Affine
import Linear.Metric
import Linear.Vector
type TypeableFloat n = (Typeable n, RealFloat n)
type UpAnnots b v n m = Deletable (Envelope v n)
::: Deletable (Trace v n)
::: Deletable (SubMap b v n m)
::: Query v n m
::: ()
type DownAnnots v n = (Transformation v n :+: Style v n)
::: Name
::: ()
transfToAnnot :: Transformation v n -> DownAnnots v n
transfToAnnot :: Transformation v n -> DownAnnots v n
transfToAnnot
= (Transformation v n :+: Style v n) -> DownAnnots v n
forall l a. (l :>: a) => a -> l
inj
((Transformation v n :+: Style v n) -> DownAnnots v n)
-> (Transformation v n -> Transformation v n :+: Style v n)
-> Transformation v n
-> DownAnnots v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (forall m n. m -> m :+: n
forall (v :: * -> *) n.
Transformation v n -> Transformation v n :+: Style v n
inL :: Transformation v n -> Transformation v n :+: Style v n)
transfFromAnnot :: (Additive v, Num n) => DownAnnots v n -> Transformation v n
transfFromAnnot :: DownAnnots v n -> Transformation v n
transfFromAnnot = Transformation v n
-> ((Transformation v n :+: Style v n) -> Transformation v n)
-> Maybe (Transformation v n :+: Style v n)
-> Transformation v n
forall b a. b -> (a -> b) -> Maybe a -> b
maybe Transformation v n
forall a. Monoid a => a
mempty (Transformation v n :+: Style v n) -> Transformation v n
forall m n. Monoid m => (m :+: n) -> m
killR (Maybe (Transformation v n :+: Style v n) -> Transformation v n)
-> (DownAnnots v n -> Maybe (Transformation v n :+: Style v n))
-> DownAnnots v n
-> Transformation v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DownAnnots v n -> Maybe (Transformation v n :+: Style v n)
forall a b. (a, b) -> a
fst
data QDiaLeaf b v n m
= PrimLeaf (Prim b v n)
| DelayedLeaf (DownAnnots v n -> n -> n -> QDiagram b v n m)
deriving a -> QDiaLeaf b v n b -> QDiaLeaf b v n a
(a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
(forall a b. (a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b)
-> (forall a b. a -> QDiaLeaf b v n b -> QDiaLeaf b v n a)
-> Functor (QDiaLeaf b v n)
forall a b. a -> QDiaLeaf b v n b -> QDiaLeaf b v n a
forall a b. (a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
forall b (v :: * -> *) n a b.
a -> QDiaLeaf b v n b -> QDiaLeaf b v n a
forall b (v :: * -> *) n a b.
(a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> QDiaLeaf b v n b -> QDiaLeaf b v n a
$c<$ :: forall b (v :: * -> *) n a b.
a -> QDiaLeaf b v n b -> QDiaLeaf b v n a
fmap :: (a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
$cfmap :: forall b (v :: * -> *) n a b.
(a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
Functor
withQDiaLeaf :: (Prim b v n -> r)
-> ((DownAnnots v n -> n -> n -> QDiagram b v n m) -> r)
-> QDiaLeaf b v n m -> r
withQDiaLeaf :: (Prim b v n -> r)
-> ((DownAnnots v n -> n -> n -> QDiagram b v n m) -> r)
-> QDiaLeaf b v n m
-> r
withQDiaLeaf Prim b v n -> r
f (DownAnnots v n -> n -> n -> QDiagram b v n m) -> r
_ (PrimLeaf Prim b v n
p) = Prim b v n -> r
f Prim b v n
p
withQDiaLeaf Prim b v n -> r
_ (DownAnnots v n -> n -> n -> QDiagram b v n m) -> r
g (DelayedLeaf DownAnnots v n -> n -> n -> QDiagram b v n m
dgn) = (DownAnnots v n -> n -> n -> QDiagram b v n m) -> r
g DownAnnots v n -> n -> n -> QDiagram b v n m
dgn
data Annotation
= Href String
| OpacityGroup Double
| KeyVal (String, String)
deriving Int -> Annotation -> ShowS
[Annotation] -> ShowS
Annotation -> String
(Int -> Annotation -> ShowS)
-> (Annotation -> String)
-> ([Annotation] -> ShowS)
-> Show Annotation
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Annotation] -> ShowS
$cshowList :: [Annotation] -> ShowS
show :: Annotation -> String
$cshow :: Annotation -> String
showsPrec :: Int -> Annotation -> ShowS
$cshowsPrec :: Int -> Annotation -> ShowS
Show
applyAnnotation
:: (Metric v, OrderedField n, Semigroup m)
=> Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation :: Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation Annotation
an (QD DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
dt) = DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD (Annotation
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
a -> DUALTree d u a l -> DUALTree d u a l
D.annot Annotation
an DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
dt)
href :: (Metric v, OrderedField n, Semigroup m)
=> String -> QDiagram b v n m -> QDiagram b v n m
href :: String -> QDiagram b v n m -> QDiagram b v n m
href = Annotation -> QDiagram b v n m -> QDiagram b v n m
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Semigroup m) =>
Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation (Annotation -> QDiagram b v n m -> QDiagram b v n m)
-> (String -> Annotation)
-> String
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Annotation
Href
opacityGroup, groupOpacity :: (Metric v, OrderedField n, Semigroup m)
=> Double -> QDiagram b v n m -> QDiagram b v n m
opacityGroup :: Double -> QDiagram b v n m -> QDiagram b v n m
opacityGroup = Annotation -> QDiagram b v n m -> QDiagram b v n m
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Semigroup m) =>
Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation (Annotation -> QDiagram b v n m -> QDiagram b v n m)
-> (Double -> Annotation)
-> Double
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Annotation
OpacityGroup
groupOpacity :: Double -> QDiagram b v n m -> QDiagram b v n m
groupOpacity = Annotation -> QDiagram b v n m -> QDiagram b v n m
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Semigroup m) =>
Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation (Annotation -> QDiagram b v n m -> QDiagram b v n m)
-> (Double -> Annotation)
-> Double
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Double -> Annotation
OpacityGroup
keyVal :: (Metric v, OrderedField n, Semigroup m)
=> (String, String) -> QDiagram b v n m -> QDiagram b v n m
keyVal :: (String, String) -> QDiagram b v n m -> QDiagram b v n m
keyVal = Annotation -> QDiagram b v n m -> QDiagram b v n m
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Semigroup m) =>
Annotation -> QDiagram b v n m -> QDiagram b v n m
applyAnnotation (Annotation -> QDiagram b v n m -> QDiagram b v n m)
-> ((String, String) -> Annotation)
-> (String, String)
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (String, String) -> Annotation
KeyVal
newtype QDiagram b v n m
= QD (D.DUALTree (DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
#if __GLASGOW_HASKELL__ >= 707
deriving Typeable
#else
instance forall b v. (Typeable b, Typeable1 v) => Typeable2 (QDiagram b v) where
typeOf2 _ = mkTyConApp (mkTyCon3 "diagrams-core" "Diagrams.Core.Types" "QDiagram") [] `mkAppTy`
typeOf (undefined :: b) `mkAppTy`
typeOf1 (undefined :: v n)
#endif
instance Wrapped (QDiagram b v n m) where
type Unwrapped (QDiagram b v n m) =
D.DUALTree (DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
_Wrapped' :: p (Unwrapped (QDiagram b v n m)) (f (Unwrapped (QDiagram b v n m)))
-> p (QDiagram b v n m) (f (QDiagram b v n m))
_Wrapped' = (QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m)
-> Iso
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b
iso (\(QD DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d) -> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d) DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD
instance Rewrapped (QDiagram b v n m) (QDiagram b' v' n' m')
type instance V (QDiagram b v n m) = v
type instance N (QDiagram b v n m) = n
type Diagram b = QDiagram b (V b) (N b) Any
pointDiagram :: (Metric v, Fractional n)
=> Point v n -> QDiagram b v n m
pointDiagram :: Point v n -> QDiagram b v n m
pointDiagram Point v n
p = DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall a b. (a -> b) -> a -> b
$ UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l. u -> DUALTree d u a l
D.leafU (Deletable (Envelope v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Envelope v n) -> UpAnnots b v n m)
-> (Envelope v n -> Deletable (Envelope v n))
-> Envelope v n
-> UpAnnots b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Envelope v n -> Deletable (Envelope v n)
forall m. m -> Deletable m
toDeletable (Envelope v n -> UpAnnots b v n m)
-> Envelope v n -> UpAnnots b v n m
forall a b. (a -> b) -> a -> b
$ Point v n -> Envelope v n
forall n (v :: * -> *).
(Fractional n, Metric v) =>
Point v n -> Envelope v n
pointEnvelope Point v n
p)
getU' :: (Monoid u', u :>: u') => D.DUALTree d u a l -> u'
getU' :: DUALTree d u a l -> u'
getU' = u' -> (u -> u') -> Maybe u -> u'
forall b a. b -> (a -> b) -> Maybe a -> b
maybe u'
forall a. Monoid a => a
mempty (u' -> (u' -> u') -> Maybe u' -> u'
forall b a. b -> (a -> b) -> Maybe a -> b
maybe u'
forall a. Monoid a => a
mempty u' -> u'
forall a. a -> a
id (Maybe u' -> u') -> (u -> Maybe u') -> u -> u'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. u -> Maybe u'
forall l a. (l :>: a) => l -> Maybe a
get) (Maybe u -> u')
-> (DUALTree d u a l -> Maybe u) -> DUALTree d u a l -> u'
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DUALTree d u a l -> Maybe u
forall d u a l. DUALTree d u a l -> Maybe u
D.getU
envelope :: (OrderedField n, Metric v, Monoid' m)
=> Lens' (QDiagram b v n m) (Envelope v n)
envelope :: Lens' (QDiagram b v n m) (Envelope v n)
envelope = (QDiagram b v n m -> Envelope v n)
-> (QDiagram b v n m -> Envelope v n -> QDiagram b v n m)
-> Lens' (QDiagram b v n m) (Envelope v n)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (Deletable (Envelope v n) -> Envelope v n
forall m. Deletable m -> m
unDelete (Deletable (Envelope v n) -> Envelope v n)
-> (QDiagram b v n m -> Deletable (Envelope v n))
-> QDiagram b v n m
-> Envelope v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (Envelope v n)
forall u' u d a l. (Monoid u', u :>: u') => DUALTree d u a l -> u'
getU' (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (Envelope v n))
-> (QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> Deletable (Envelope v n)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped') ((Envelope v n -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> Envelope v n -> QDiagram b v n m
forall a b c. (a -> b -> c) -> b -> a -> c
flip Envelope v n -> QDiagram b v n m -> QDiagram b v n m
forall b (v :: * -> *) n m.
(OrderedField n, Metric v, Monoid' m) =>
Envelope v n -> QDiagram b v n m -> QDiagram b v n m
setEnvelope)
setEnvelope :: forall b v n m. ( OrderedField n, Metric v
, Monoid' m)
=> Envelope v n -> QDiagram b v n m -> QDiagram b v n m
setEnvelope :: Envelope v n -> QDiagram b v n m -> QDiagram b v n m
setEnvelope Envelope v n
e =
ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ( UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (Deletable (Envelope v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Envelope v n) -> UpAnnots b v n m)
-> (Envelope v n -> Deletable (Envelope v n))
-> Envelope v n
-> UpAnnots b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Envelope v n -> Deletable (Envelope v n)
forall m. m -> Deletable m
toDeletable (Envelope v n -> UpAnnots b v n m)
-> Envelope v n -> UpAnnots b v n m
forall a b. (a -> b) -> a -> b
$ Envelope v n
e)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (Deletable (Envelope v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Envelope v n)
forall m. Monoid m => Deletable m
deleteL :: Deletable (Envelope v n)))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpost (Deletable (Envelope v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Envelope v n)
forall m. Monoid m => Deletable m
deleteR :: Deletable (Envelope v n)))
)
trace :: (Metric v, OrderedField n, Semigroup m) =>
Lens' (QDiagram b v n m) (Trace v n)
trace :: Lens' (QDiagram b v n m) (Trace v n)
trace = (QDiagram b v n m -> Trace v n)
-> (QDiagram b v n m -> Trace v n -> QDiagram b v n m)
-> Lens' (QDiagram b v n m) (Trace v n)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (Deletable (Trace v n) -> Trace v n
forall m. Deletable m -> m
unDelete (Deletable (Trace v n) -> Trace v n)
-> (QDiagram b v n m -> Deletable (Trace v n))
-> QDiagram b v n m
-> Trace v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (Trace v n)
forall u' u d a l. (Monoid u', u :>: u') => DUALTree d u a l -> u'
getU' (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (Trace v n))
-> (QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> Deletable (Trace v n)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped') ((Trace v n -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> Trace v n -> QDiagram b v n m
forall a b c. (a -> b -> c) -> b -> a -> c
flip Trace v n -> QDiagram b v n m -> QDiagram b v n m
forall b (v :: * -> *) n m.
(OrderedField n, Metric v, Semigroup m) =>
Trace v n -> QDiagram b v n m -> QDiagram b v n m
setTrace)
setTrace :: forall b v n m. ( OrderedField n, Metric v
, Semigroup m)
=> Trace v n -> QDiagram b v n m -> QDiagram b v n m
setTrace :: Trace v n -> QDiagram b v n m -> QDiagram b v n m
setTrace Trace v n
t = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ( UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (Deletable (Trace v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Trace v n) -> UpAnnots b v n m)
-> (Trace v n -> Deletable (Trace v n))
-> Trace v n
-> UpAnnots b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Trace v n -> Deletable (Trace v n)
forall m. m -> Deletable m
toDeletable (Trace v n -> UpAnnots b v n m) -> Trace v n -> UpAnnots b v n m
forall a b. (a -> b) -> a -> b
$ Trace v n
t)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (Deletable (Trace v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Trace v n)
forall m. Monoid m => Deletable m
deleteL :: Deletable (Trace v n)))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpost (Deletable (Trace v n) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (Trace v n)
forall m. Monoid m => Deletable m
deleteR :: Deletable (Trace v n)))
)
subMap :: (Metric v, Semigroup m, OrderedField n)
=> Lens' (QDiagram b v n m) (SubMap b v n m)
subMap :: Lens' (QDiagram b v n m) (SubMap b v n m)
subMap = (QDiagram b v n m -> SubMap b v n m)
-> (QDiagram b v n m -> SubMap b v n m -> QDiagram b v n m)
-> Lens' (QDiagram b v n m) (SubMap b v n m)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
lens (Deletable (SubMap b v n m) -> SubMap b v n m
forall m. Deletable m -> m
unDelete (Deletable (SubMap b v n m) -> SubMap b v n m)
-> (QDiagram b v n m -> Deletable (SubMap b v n m))
-> QDiagram b v n m
-> SubMap b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (SubMap b v n m)
forall u' u d a l. (Monoid u', u :>: u') => DUALTree d u a l -> u'
getU' (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Deletable (SubMap b v n m))
-> (QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> Deletable (SubMap b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped') ((SubMap b v n m -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> SubMap b v n m -> QDiagram b v n m
forall a b c. (a -> b -> c) -> b -> a -> c
flip SubMap b v n m -> QDiagram b v n m -> QDiagram b v n m
forall (v :: * -> *) m n b.
(Metric v, Semigroup m, OrderedField n) =>
SubMap b v n m -> QDiagram b v n m -> QDiagram b v n m
setMap)
where
setMap :: (Metric v, Semigroup m, OrderedField n) =>
SubMap b v n m -> QDiagram b v n m -> QDiagram b v n m
setMap :: SubMap b v n m -> QDiagram b v n m -> QDiagram b v n m
setMap SubMap b v n m
m = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ( UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (SubMap b v n m -> UpAnnots b v n m)
-> SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Deletable (SubMap b v n m) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (SubMap b v n m) -> UpAnnots b v n m)
-> (SubMap b v n m -> Deletable (SubMap b v n m))
-> SubMap b v n m
-> UpAnnots b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SubMap b v n m -> Deletable (SubMap b v n m)
forall m. m -> Deletable m
toDeletable (SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall a b. (a -> b) -> a -> b
$ SubMap b v n m
m)
names :: (Metric v, Semigroup m, OrderedField n)
=> QDiagram b v n m -> [(Name, [Point v n])]
names :: QDiagram b v n m -> [(Name, [Point v n])]
names = (((Name, [Subdiagram b v n m]) -> (Name, [Point v n]))
-> [(Name, [Subdiagram b v n m])] -> [(Name, [Point v n])]
forall a b. (a -> b) -> [a] -> [b]
map (((Name, [Subdiagram b v n m]) -> (Name, [Point v n]))
-> [(Name, [Subdiagram b v n m])] -> [(Name, [Point v n])])
-> ((Subdiagram b v n m -> Point v n)
-> (Name, [Subdiagram b v n m]) -> (Name, [Point v n]))
-> (Subdiagram b v n m -> Point v n)
-> [(Name, [Subdiagram b v n m])]
-> [(Name, [Point v n])]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Subdiagram b v n m] -> [Point v n])
-> (Name, [Subdiagram b v n m]) -> (Name, [Point v n])
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (([Subdiagram b v n m] -> [Point v n])
-> (Name, [Subdiagram b v n m]) -> (Name, [Point v n]))
-> ((Subdiagram b v n m -> Point v n)
-> [Subdiagram b v n m] -> [Point v n])
-> (Subdiagram b v n m -> Point v n)
-> (Name, [Subdiagram b v n m])
-> (Name, [Point v n])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Subdiagram b v n m -> Point v n)
-> [Subdiagram b v n m] -> [Point v n]
forall a b. (a -> b) -> [a] -> [b]
map) Subdiagram b v n m -> Point v n
forall (v :: * -> *) n b m.
(Additive v, Num n) =>
Subdiagram b v n m -> Point v n
location ([(Name, [Subdiagram b v n m])] -> [(Name, [Point v n])])
-> (QDiagram b v n m -> [(Name, [Subdiagram b v n m])])
-> QDiagram b v n m
-> [(Name, [Point v n])]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map Name [Subdiagram b v n m] -> [(Name, [Subdiagram b v n m])]
forall k a. Map k a -> [(k, a)]
M.assocs (Map Name [Subdiagram b v n m] -> [(Name, [Subdiagram b v n m])])
-> (QDiagram b v n m -> Map Name [Subdiagram b v n m])
-> QDiagram b v n m
-> [(Name, [Subdiagram b v n m])]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting
(Map Name [Subdiagram b v n m])
(QDiagram b v n m)
(Map Name [Subdiagram b v n m])
-> QDiagram b v n m -> Map Name [Subdiagram b v n m]
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view ((SubMap b v n m
-> Const (Map Name [Subdiagram b v n m]) (SubMap b v n m))
-> QDiagram b v n m
-> Const (Map Name [Subdiagram b v n m]) (QDiagram b v n m)
forall (v :: * -> *) m n b.
(Metric v, Semigroup m, OrderedField n) =>
Lens' (QDiagram b v n m) (SubMap b v n m)
subMap ((SubMap b v n m
-> Const (Map Name [Subdiagram b v n m]) (SubMap b v n m))
-> QDiagram b v n m
-> Const (Map Name [Subdiagram b v n m]) (QDiagram b v n m))
-> ((Map Name [Subdiagram b v n m]
-> Const
(Map Name [Subdiagram b v n m]) (Map Name [Subdiagram b v n m]))
-> SubMap b v n m
-> Const (Map Name [Subdiagram b v n m]) (SubMap b v n m))
-> Getting
(Map Name [Subdiagram b v n m])
(QDiagram b v n m)
(Map Name [Subdiagram b v n m])
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Map Name [Subdiagram b v n m]
-> Const
(Map Name [Subdiagram b v n m]) (Map Name [Subdiagram b v n m]))
-> SubMap b v n m
-> Const (Map Name [Subdiagram b v n m]) (SubMap b v n m)
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped')
nameSub :: (IsName nm , Metric v, OrderedField n, Semigroup m)
=> (QDiagram b v n m -> Subdiagram b v n m) -> nm -> QDiagram b v n m -> QDiagram b v n m
nameSub :: (QDiagram b v n m -> Subdiagram b v n m)
-> nm -> QDiagram b v n m -> QDiagram b v n m
nameSub QDiagram b v n m -> Subdiagram b v n m
s nm
n QDiagram b v n m
d = QDiagram b v n m
d'
where d' :: QDiagram b v n m
d' = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' (UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (SubMap b v n m -> UpAnnots b v n m)
-> SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Deletable (SubMap b v n m) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (SubMap b v n m) -> UpAnnots b v n m)
-> (SubMap b v n m -> Deletable (SubMap b v n m))
-> SubMap b v n m
-> UpAnnots b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SubMap b v n m -> Deletable (SubMap b v n m)
forall m. m -> Deletable m
toDeletable (SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> SubMap b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall a b. (a -> b) -> a -> b
$ [(nm, Subdiagram b v n m)] -> SubMap b v n m
forall a b (v :: * -> *) n m.
IsName a =>
[(a, Subdiagram b v n m)] -> SubMap b v n m
fromNames [(nm
n,QDiagram b v n m -> Subdiagram b v n m
s QDiagram b v n m
d')]) QDiagram b v n m
d
lookupName :: (IsName nm, Metric v, Semigroup m, OrderedField n)
=> nm -> QDiagram b v n m -> Maybe (Subdiagram b v n m)
lookupName :: nm -> QDiagram b v n m -> Maybe (Subdiagram b v n m)
lookupName nm
n QDiagram b v n m
d = Name -> SubMap b v n m -> Maybe [Subdiagram b v n m]
forall nm b (v :: * -> *) n m.
IsName nm =>
nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]
lookupSub (nm -> Name
forall a. IsName a => a -> Name
toName nm
n) (QDiagram b v n m
dQDiagram b v n m
-> Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
-> SubMap b v n m
forall s a. s -> Getting a s a -> a
^.Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
forall (v :: * -> *) m n b.
(Metric v, Semigroup m, OrderedField n) =>
Lens' (QDiagram b v n m) (SubMap b v n m)
subMap) Maybe [Subdiagram b v n m]
-> ([Subdiagram b v n m] -> Maybe (Subdiagram b v n m))
-> Maybe (Subdiagram b v n m)
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= [Subdiagram b v n m] -> Maybe (Subdiagram b v n m)
forall a. [a] -> Maybe a
listToMaybe
withName :: (IsName nm, Metric v
, Semigroup m, OrderedField n)
=> nm -> (Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> QDiagram b v n m
withName :: nm
-> (Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m
-> QDiagram b v n m
withName nm
n Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
f QDiagram b v n m
d = (QDiagram b v n m -> QDiagram b v n m)
-> (Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m)
-> Maybe (Subdiagram b v n m)
-> QDiagram b v n m
-> QDiagram b v n m
forall b a. b -> (a -> b) -> Maybe a -> b
maybe QDiagram b v n m -> QDiagram b v n m
forall a. a -> a
id Subdiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
f (nm -> QDiagram b v n m -> Maybe (Subdiagram b v n m)
forall nm (v :: * -> *) m n b.
(IsName nm, Metric v, Semigroup m, OrderedField n) =>
nm -> QDiagram b v n m -> Maybe (Subdiagram b v n m)
lookupName nm
n QDiagram b v n m
d) QDiagram b v n m
d
withNameAll :: (IsName nm, Metric v
, Semigroup m, OrderedField n)
=> nm -> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> QDiagram b v n m
withNameAll :: nm
-> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m
-> QDiagram b v n m
withNameAll nm
n [Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m
f QDiagram b v n m
d = [Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m
f ([Subdiagram b v n m]
-> Maybe [Subdiagram b v n m] -> [Subdiagram b v n m]
forall a. a -> Maybe a -> a
fromMaybe [] (Name -> SubMap b v n m -> Maybe [Subdiagram b v n m]
forall nm b (v :: * -> *) n m.
IsName nm =>
nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]
lookupSub (nm -> Name
forall a. IsName a => a -> Name
toName nm
n) (QDiagram b v n m
dQDiagram b v n m
-> Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
-> SubMap b v n m
forall s a. s -> Getting a s a -> a
^.Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
forall (v :: * -> *) m n b.
(Metric v, Semigroup m, OrderedField n) =>
Lens' (QDiagram b v n m) (SubMap b v n m)
subMap))) QDiagram b v n m
d
withNames :: (IsName nm, Metric v
, Semigroup m, OrderedField n)
=> [nm] -> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m -> QDiagram b v n m
withNames :: [nm]
-> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m)
-> QDiagram b v n m
-> QDiagram b v n m
withNames [nm]
ns [Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m
f QDiagram b v n m
d = (QDiagram b v n m -> QDiagram b v n m)
-> ([Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m)
-> Maybe [Subdiagram b v n m]
-> QDiagram b v n m
-> QDiagram b v n m
forall b a. b -> (a -> b) -> Maybe a -> b
maybe QDiagram b v n m -> QDiagram b v n m
forall a. a -> a
id [Subdiagram b v n m] -> QDiagram b v n m -> QDiagram b v n m
f Maybe [Subdiagram b v n m]
ns' QDiagram b v n m
d
where
nd :: SubMap b v n m
nd = QDiagram b v n m
dQDiagram b v n m
-> Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
-> SubMap b v n m
forall s a. s -> Getting a s a -> a
^.Getting (SubMap b v n m) (QDiagram b v n m) (SubMap b v n m)
forall (v :: * -> *) m n b.
(Metric v, Semigroup m, OrderedField n) =>
Lens' (QDiagram b v n m) (SubMap b v n m)
subMap
ns' :: Maybe [Subdiagram b v n m]
ns' = [Maybe (Subdiagram b v n m)] -> Maybe [Subdiagram b v n m]
forall (t :: * -> *) (m :: * -> *) a.
(Traversable t, Monad m) =>
t (m a) -> m (t a)
T.sequence ((nm -> Maybe (Subdiagram b v n m))
-> [nm] -> [Maybe (Subdiagram b v n m)]
forall a b. (a -> b) -> [a] -> [b]
map (([Subdiagram b v n m] -> Maybe (Subdiagram b v n m)
forall a. [a] -> Maybe a
listToMaybe([Subdiagram b v n m] -> Maybe (Subdiagram b v n m))
-> Maybe [Subdiagram b v n m] -> Maybe (Subdiagram b v n m)
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<<) (Maybe [Subdiagram b v n m] -> Maybe (Subdiagram b v n m))
-> (nm -> Maybe [Subdiagram b v n m])
-> nm
-> Maybe (Subdiagram b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((SubMap b v n m -> Maybe [Subdiagram b v n m])
-> SubMap b v n m -> Maybe [Subdiagram b v n m]
forall a b. (a -> b) -> a -> b
$ SubMap b v n m
nd) ((SubMap b v n m -> Maybe [Subdiagram b v n m])
-> Maybe [Subdiagram b v n m])
-> (nm -> SubMap b v n m -> Maybe [Subdiagram b v n m])
-> nm
-> Maybe [Subdiagram b v n m]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> SubMap b v n m -> Maybe [Subdiagram b v n m]
forall nm b (v :: * -> *) n m.
IsName nm =>
nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]
lookupSub (Name -> SubMap b v n m -> Maybe [Subdiagram b v n m])
-> (nm -> Name)
-> nm
-> SubMap b v n m
-> Maybe [Subdiagram b v n m]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. nm -> Name
forall a. IsName a => a -> Name
toName) [nm]
ns)
localize :: forall b v n m. (Metric v, OrderedField n, Semigroup m)
=> QDiagram b v n m -> QDiagram b v n m
localize :: QDiagram b v n m -> QDiagram b v n m
localize = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ( UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpre (Deletable (SubMap b v n m) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (SubMap b v n m)
forall m. Monoid m => Deletable m
deleteL :: Deletable (SubMap b v n m)))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UpAnnots b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u d a l.
(Semigroup u, Action d u) =>
u -> DUALTree d u a l -> DUALTree d u a l
D.applyUpost (Deletable (SubMap b v n m) -> UpAnnots b v n m
forall l a. (l :>: a) => a -> l
inj (Deletable (SubMap b v n m)
forall m. Monoid m => Deletable m
deleteR :: Deletable (SubMap b v n m)))
)
query :: Monoid m => QDiagram b v n m -> Query v n m
query :: QDiagram b v n m -> Query v n m
query = DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Query v n m
forall u' u d a l. (Monoid u', u :>: u') => DUALTree d u a l -> u'
getU' (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> Query v n m)
-> (QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> Query v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped'
mkQD :: Prim b v n -> Envelope v n -> Trace v n -> SubMap b v n m -> Query v n m
-> QDiagram b v n m
mkQD :: Prim b v n
-> Envelope v n
-> Trace v n
-> SubMap b v n m
-> Query v n m
-> QDiagram b v n m
mkQD Prim b v n
p = QDiaLeaf b v n m
-> Envelope v n
-> Trace v n
-> SubMap b v n m
-> Query v n m
-> QDiagram b v n m
forall b (v :: * -> *) n m.
QDiaLeaf b v n m
-> Envelope v n
-> Trace v n
-> SubMap b v n m
-> Query v n m
-> QDiagram b v n m
mkQD' (Prim b v n -> QDiaLeaf b v n m
forall b (v :: * -> *) n m. Prim b v n -> QDiaLeaf b v n m
PrimLeaf Prim b v n
p)
mkQD' :: QDiaLeaf b v n m -> Envelope v n -> Trace v n -> SubMap b v n m -> Query v n m
-> QDiagram b v n m
mkQD' :: QDiaLeaf b v n m
-> Envelope v n
-> Trace v n
-> SubMap b v n m
-> Query v n m
-> QDiagram b v n m
mkQD' QDiaLeaf b v n m
l Envelope v n
e Trace v n
t SubMap b v n m
n Query v n m
q
= DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall a b. (a -> b) -> a -> b
$ UpAnnots b v n m
-> QDiaLeaf b v n m
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall u l d a. u -> l -> DUALTree d u a l
D.leaf (Envelope v n -> Deletable (Envelope v n)
forall m. m -> Deletable m
toDeletable Envelope v n
e Deletable (Envelope v n)
-> (Deletable (Trace v n)
::: (Deletable (SubMap b v n m) ::: (Query v n m ::: ())))
-> UpAnnots b v n m
forall a l. a -> l -> a ::: l
*: Trace v n -> Deletable (Trace v n)
forall m. m -> Deletable m
toDeletable Trace v n
t Deletable (Trace v n)
-> (Deletable (SubMap b v n m) ::: (Query v n m ::: ()))
-> Deletable (Trace v n)
::: (Deletable (SubMap b v n m) ::: (Query v n m ::: ()))
forall a l. a -> l -> a ::: l
*: SubMap b v n m -> Deletable (SubMap b v n m)
forall m. m -> Deletable m
toDeletable SubMap b v n m
n Deletable (SubMap b v n m)
-> (Query v n m ::: ())
-> Deletable (SubMap b v n m) ::: (Query v n m ::: ())
forall a l. a -> l -> a ::: l
*: Query v n m
q Query v n m -> () -> Query v n m ::: ()
forall a l. a -> l -> a ::: l
*: ()) QDiaLeaf b v n m
l
instance (Metric v, OrderedField n, Semigroup m)
=> Monoid (QDiagram b v n m) where
mempty :: QDiagram b v n m
mempty = DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall d u a l. DUALTree d u a l
D.empty
mappend :: QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
mappend = QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
forall a. Semigroup a => a -> a -> a
(<>)
instance (Metric v, OrderedField n, Semigroup m)
=> Semigroup (QDiagram b v n m) where
(QD DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d1) <> :: QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
<> (QD DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d2) = DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d2 DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall a. Semigroup a => a -> a -> a
<> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
d1)
atop :: (OrderedField n, Metric v, Semigroup m)
=> QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
atop :: QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
atop = QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
forall a. Semigroup a => a -> a -> a
(<>)
infixl 6 `atop`
instance Functor (QDiagram b v n) where
fmap :: (a -> b) -> QDiagram b v n a -> QDiagram b v n b
fmap a -> b
f = ASetter
(QDiagram b v n a)
(QDiagram b v n b)
(DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a))
(DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b))
-> QDiagram b v n a
-> QDiagram b v n b
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ((Unwrapped (QDiagram b v n a) -> QDiagram b v n a)
-> Iso
(QDiagram b v n a)
(QDiagram b v n b)
(Unwrapped (QDiagram b v n a))
(Unwrapped (QDiagram b v n b))
forall s t.
Rewrapping s t =>
(Unwrapped s -> s) -> Iso s t (Unwrapped s) (Unwrapped t)
_Wrapping Unwrapped (QDiagram b v n a) -> QDiagram b v n a
forall b (v :: * -> *) n m.
DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> QDiagram b v n m
QD)
( ((UpAnnots b v n a -> UpAnnots b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b)
forall u u' d a l.
(u -> u') -> DUALTree d u a l -> DUALTree d u' a l
D.mapU ((UpAnnots b v n a -> UpAnnots b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b))
-> (((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> UpAnnots b v n a -> UpAnnots b v n b)
-> ((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n b) ::: (Query v n b ::: ())))
-> UpAnnots b v n a -> UpAnnots b v n b
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (((Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n b) ::: (Query v n b ::: ())))
-> UpAnnots b v n a -> UpAnnots b v n b)
-> (((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n b) ::: (Query v n b ::: ())))
-> ((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> UpAnnots b v n a
-> UpAnnots b v n b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (Trace v n)),
Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second)
( ((Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b)))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ())
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first ((Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b)))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> ((a -> b)
-> Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b)))
-> (a -> b)
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Deletable (SubMap b v n a) -> Deletable (SubMap b v n b))
-> Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Deletable (SubMap b v n a) -> Deletable (SubMap b v n b))
-> Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b)))
-> ((a -> b)
-> Deletable (SubMap b v n a) -> Deletable (SubMap b v n b))
-> (a -> b)
-> Maybe (Deletable (SubMap b v n a))
-> Maybe (Deletable (SubMap b v n b))
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (SubMap b v n a -> SubMap b v n b)
-> Deletable (SubMap b v n a) -> Deletable (SubMap b v n b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((SubMap b v n a -> SubMap b v n b)
-> Deletable (SubMap b v n a) -> Deletable (SubMap b v n b))
-> ((a -> b) -> SubMap b v n a -> SubMap b v n b)
-> (a -> b)
-> Deletable (SubMap b v n a)
-> Deletable (SubMap b v n b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> SubMap b v n a -> SubMap b v n b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) a -> b
f
((Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ()))
-> ((Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ()))
-> (Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> Deletable (SubMap b v n b) ::: (Query v n b ::: ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (((Query v n a ::: ()) -> Query v n b ::: ())
-> (Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (d, b) (d, c)
second (((Query v n a ::: ()) -> Query v n b ::: ())
-> (Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ()))
-> ((a -> b) -> (Query v n a ::: ()) -> Query v n b ::: ())
-> (a -> b)
-> (Deletable (SubMap b v n a) ::: (Query v n a ::: ()))
-> (Maybe (Deletable (SubMap b v n a)), Query v n b ::: ())
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Maybe (Query v n a) -> Maybe (Query v n b))
-> (Query v n a ::: ()) -> Query v n b ::: ()
forall (a :: * -> * -> *) b c d.
Arrow a =>
a b c -> a (b, d) (c, d)
first ((Maybe (Query v n a) -> Maybe (Query v n b))
-> (Query v n a ::: ()) -> Query v n b ::: ())
-> ((a -> b) -> Maybe (Query v n a) -> Maybe (Query v n b))
-> (a -> b)
-> (Query v n a ::: ())
-> Query v n b ::: ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Query v n a -> Query v n b)
-> Maybe (Query v n a) -> Maybe (Query v n b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((Query v n a -> Query v n b)
-> Maybe (Query v n a) -> Maybe (Query v n b))
-> ((a -> b) -> Query v n a -> Query v n b)
-> (a -> b)
-> Maybe (Query v n a)
-> Maybe (Query v n b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> Query v n a -> Query v n b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) a -> b
f
)
(DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b))
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n b) Annotation (QDiaLeaf b v n b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((QDiaLeaf b v n a -> QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap ((QDiaLeaf b v n a -> QDiaLeaf b v n b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b))
-> ((a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b)
-> (a -> b)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n a)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n a) Annotation (QDiaLeaf b v n b)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> QDiaLeaf b v n a -> QDiaLeaf b v n b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap) a -> b
f
)
instance (Metric v, OrderedField n, Semigroup m)
=> HasStyle (QDiagram b v n m) where
applyStyle :: Style (V (QDiagram b v n m)) (N (QDiagram b v n m))
-> QDiagram b v n m -> QDiagram b v n m
applyStyle = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m -> QDiagram b v n m)
-> (Style v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> Style v n
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall d u a l.
(Semigroup d, Semigroup u, Action d u) =>
d -> DUALTree d u a l -> DUALTree d u a l
D.applyD (DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (Style v n -> DownAnnots v n)
-> Style v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Transformation v n :+: Style v n) -> DownAnnots v n
forall l a. (l :>: a) => a -> l
inj
((Transformation v n :+: Style v n) -> DownAnnots v n)
-> (Style v n -> Transformation v n :+: Style v n)
-> Style v n
-> DownAnnots v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Style v n -> Transformation v n :+: Style v n
forall n m. n -> m :+: n
inR :: Style v n -> Transformation v n :+: Style v n)
instance (Metric v, OrderedField n, Monoid' m)
=> Juxtaposable (QDiagram b v n m) where
juxtapose :: Vn (QDiagram b v n m)
-> QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
juxtapose = Vn (QDiagram b v n m)
-> QDiagram b v n m -> QDiagram b v n m -> QDiagram b v n m
forall a. (Enveloped a, HasOrigin a) => Vn a -> a -> a -> a
juxtaposeDefault
instance (Metric v, OrderedField n, Monoid' m)
=> Enveloped (QDiagram b v n m) where
getEnvelope :: QDiagram b v n m
-> Envelope (V (QDiagram b v n m)) (N (QDiagram b v n m))
getEnvelope = Getting (Envelope v n) (QDiagram b v n m) (Envelope v n)
-> QDiagram b v n m -> Envelope v n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Envelope v n) (QDiagram b v n m) (Envelope v n)
forall n (v :: * -> *) m b.
(OrderedField n, Metric v, Monoid' m) =>
Lens' (QDiagram b v n m) (Envelope v n)
envelope
instance (Metric v, OrderedField n, Semigroup m)
=> Traced (QDiagram b v n m) where
getTrace :: QDiagram b v n m
-> Trace (V (QDiagram b v n m)) (N (QDiagram b v n m))
getTrace = Getting (Trace v n) (QDiagram b v n m) (Trace v n)
-> QDiagram b v n m -> Trace v n
forall s (m :: * -> *) a. MonadReader s m => Getting a s a -> m a
view Getting (Trace v n) (QDiagram b v n m) (Trace v n)
forall (v :: * -> *) n m b.
(Metric v, OrderedField n, Semigroup m) =>
Lens' (QDiagram b v n m) (Trace v n)
trace
instance (Metric v, OrderedField n, Semigroup m)
=> HasOrigin (QDiagram b v n m) where
moveOriginTo :: Point (V (QDiagram b v n m)) (N (QDiagram b v n m))
-> QDiagram b v n m -> QDiagram b v n m
moveOriginTo = v n -> QDiagram b v n m -> QDiagram b v n m
forall t. Transformable t => Vn t -> t -> t
translate (v n -> QDiagram b v n m -> QDiagram b v n m)
-> (Point v n -> v n)
-> Point v n
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> Point v n -> Diff (Point v) n
forall (p :: * -> *) a. (Affine p, Num a) => p a -> p a -> Diff p a
.-.)
instance (OrderedField n, Metric v, Semigroup m)
=> Transformable (QDiagram b v n m) where
transform :: Transformation (V (QDiagram b v n m)) (N (QDiagram b v n m))
-> QDiagram b v n m -> QDiagram b v n m
transform = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m -> QDiagram b v n m)
-> (Transformation v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> Transformation v n
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall d u a l.
(Semigroup d, Semigroup u, Action d u) =>
d -> DUALTree d u a l -> DUALTree d u a l
D.applyD (DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (Transformation v n -> DownAnnots v n)
-> Transformation v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation v n -> DownAnnots v n
forall (v :: * -> *) n. Transformation v n -> DownAnnots v n
transfToAnnot
instance (Metric v, OrderedField n, Semigroup m)
=> Qualifiable (QDiagram b v n m) where
.>> :: a -> QDiagram b v n m -> QDiagram b v n m
(.>>) = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m -> QDiagram b v n m)
-> (a
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> a
-> QDiagram b v n m
-> QDiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall d u a l.
(Semigroup d, Semigroup u, Action d u) =>
d -> DUALTree d u a l -> DUALTree d u a l
D.applyD (DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (a -> DownAnnots v n)
-> a
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Name -> DownAnnots v n
forall l a. (l :>: a) => a -> l
inj (Name -> DownAnnots v n) -> (a -> Name) -> a -> DownAnnots v n
forall b c a. (b -> c) -> (a -> b) -> a -> c
. a -> Name
forall a. IsName a => a -> Name
toName
data Subdiagram b v n m = Subdiagram (QDiagram b v n m) (DownAnnots v n)
type instance V (Subdiagram b v n m) = v
type instance N (Subdiagram b v n m) = n
mkSubdiagram :: QDiagram b v n m -> Subdiagram b v n m
mkSubdiagram :: QDiagram b v n m -> Subdiagram b v n m
mkSubdiagram QDiagram b v n m
d = QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
forall b (v :: * -> *) n m.
QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
Subdiagram QDiagram b v n m
d DownAnnots v n
forall l. MList l => l
empty
subPoint :: (Metric v, OrderedField n)
=> Point v n -> Subdiagram b v n m
subPoint :: Point v n -> Subdiagram b v n m
subPoint Point v n
p = QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
forall b (v :: * -> *) n m.
QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
Subdiagram
(Point v n -> QDiagram b v n m
forall (v :: * -> *) n b m.
(Metric v, Fractional n) =>
Point v n -> QDiagram b v n m
pointDiagram Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin)
(Transformation v n -> DownAnnots v n
forall (v :: * -> *) n. Transformation v n -> DownAnnots v n
transfToAnnot (Transformation v n -> DownAnnots v n)
-> Transformation v n -> DownAnnots v n
forall a b. (a -> b) -> a -> b
$ v n -> Transformation v n
forall (v :: * -> *) n. v n -> Transformation v n
translation (Point v n
p Point v n -> Point v n -> Diff (Point v) n
forall (p :: * -> *) a. (Affine p, Num a) => p a -> p a -> Diff p a
.-. Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin))
instance Functor (Subdiagram b v n) where
fmap :: (a -> b) -> Subdiagram b v n a -> Subdiagram b v n b
fmap a -> b
f (Subdiagram QDiagram b v n a
d DownAnnots v n
a) = QDiagram b v n b -> DownAnnots v n -> Subdiagram b v n b
forall b (v :: * -> *) n m.
QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
Subdiagram ((a -> b) -> QDiagram b v n a -> QDiagram b v n b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap a -> b
f QDiagram b v n a
d) DownAnnots v n
a
instance (OrderedField n, Metric v, Monoid' m)
=> Enveloped (Subdiagram b v n m) where
getEnvelope :: Subdiagram b v n m
-> Envelope (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
getEnvelope (Subdiagram QDiagram b v n m
d DownAnnots v n
a) = Transformation (V (Envelope v n)) (N (Envelope v n))
-> Envelope v n -> Envelope v n
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform (DownAnnots v n -> Transformation v n
forall (v :: * -> *) n.
(Additive v, Num n) =>
DownAnnots v n -> Transformation v n
transfFromAnnot DownAnnots v n
a) (Envelope v n -> Envelope v n) -> Envelope v n -> Envelope v n
forall a b. (a -> b) -> a -> b
$ QDiagram b v n m
-> Envelope (V (QDiagram b v n m)) (N (QDiagram b v n m))
forall a. Enveloped a => a -> Envelope (V a) (N a)
getEnvelope QDiagram b v n m
d
instance (OrderedField n, Metric v, Semigroup m)
=> Traced (Subdiagram b v n m) where
getTrace :: Subdiagram b v n m
-> Trace (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
getTrace (Subdiagram QDiagram b v n m
d DownAnnots v n
a) = Transformation (V (Trace v n)) (N (Trace v n))
-> Trace v n -> Trace v n
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform (DownAnnots v n -> Transformation v n
forall (v :: * -> *) n.
(Additive v, Num n) =>
DownAnnots v n -> Transformation v n
transfFromAnnot DownAnnots v n
a) (Trace v n -> Trace v n) -> Trace v n -> Trace v n
forall a b. (a -> b) -> a -> b
$ QDiagram b v n m
-> Trace (V (QDiagram b v n m)) (N (QDiagram b v n m))
forall a. Traced a => a -> Trace (V a) (N a)
getTrace QDiagram b v n m
d
instance (Metric v, OrderedField n)
=> HasOrigin (Subdiagram b v n m) where
moveOriginTo :: Point (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
-> Subdiagram b v n m -> Subdiagram b v n m
moveOriginTo = v n -> Subdiagram b v n m -> Subdiagram b v n m
forall t. Transformable t => Vn t -> t -> t
translate (v n -> Subdiagram b v n m -> Subdiagram b v n m)
-> (Point v n -> v n)
-> Point v n
-> Subdiagram b v n m
-> Subdiagram b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin Point v n -> Point v n -> Diff (Point v) n
forall (p :: * -> *) a. (Affine p, Num a) => p a -> p a -> Diff p a
.-.)
instance Transformable (Subdiagram b v n m) where
transform :: Transformation (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
-> Subdiagram b v n m -> Subdiagram b v n m
transform Transformation (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
t (Subdiagram QDiagram b v n m
d DownAnnots v n
a) = QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
forall b (v :: * -> *) n m.
QDiagram b v n m -> DownAnnots v n -> Subdiagram b v n m
Subdiagram QDiagram b v n m
d (Transformation v n -> DownAnnots v n
forall (v :: * -> *) n. Transformation v n -> DownAnnots v n
transfToAnnot Transformation v n
Transformation (V (Subdiagram b v n m)) (N (Subdiagram b v n m))
t DownAnnots v n -> DownAnnots v n -> DownAnnots v n
forall a. Semigroup a => a -> a -> a
<> DownAnnots v n
a)
location :: (Additive v, Num n) => Subdiagram b v n m -> Point v n
location :: Subdiagram b v n m -> Point v n
location (Subdiagram QDiagram b v n m
_ DownAnnots v n
a) = Transformation (V (Point v n)) (N (Point v n))
-> Point v n -> Point v n
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform (DownAnnots v n -> Transformation v n
forall (v :: * -> *) n.
(Additive v, Num n) =>
DownAnnots v n -> Transformation v n
transfFromAnnot DownAnnots v n
a) Point v n
forall (f :: * -> *) a. (Additive f, Num a) => Point f a
origin
getSub :: (Metric v, OrderedField n, Semigroup m)
=> Subdiagram b v n m -> QDiagram b v n m
getSub :: Subdiagram b v n m -> QDiagram b v n m
getSub (Subdiagram QDiagram b v n m
d DownAnnots v n
a) = ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> (DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
-> QDiagram b v n m
-> QDiagram b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(QDiagram b v n m)
(QDiagram b v n m)
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
(DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m))
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' (DownAnnots v n
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
-> DUALTree
(DownAnnots v n) (UpAnnots b v n m) Annotation (QDiaLeaf b v n m)
forall d u a l.
(Semigroup d, Semigroup u, Action d u) =>
d -> DUALTree d u a l -> DUALTree d u a l
D.applyD DownAnnots v n
a) QDiagram b v n m
d
rawSub :: Subdiagram b v n m -> QDiagram b v n m
rawSub :: Subdiagram b v n m -> QDiagram b v n m
rawSub (Subdiagram QDiagram b v n m
d DownAnnots v n
_) = QDiagram b v n m
d
newtype SubMap b v n m = SubMap (M.Map Name [Subdiagram b v n m])
instance Wrapped (SubMap b v n m) where
type Unwrapped (SubMap b v n m) = M.Map Name [Subdiagram b v n m]
_Wrapped' :: p (Unwrapped (SubMap b v n m)) (f (Unwrapped (SubMap b v n m)))
-> p (SubMap b v n m) (f (SubMap b v n m))
_Wrapped' = (SubMap b v n m -> Map Name [Subdiagram b v n m])
-> (Map Name [Subdiagram b v n m] -> SubMap b v n m)
-> Iso
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
forall s a b t. (s -> a) -> (b -> t) -> Iso s t a b
iso (\(SubMap Map Name [Subdiagram b v n m]
m) -> Map Name [Subdiagram b v n m]
m) Map Name [Subdiagram b v n m] -> SubMap b v n m
forall b (v :: * -> *) n m.
Map Name [Subdiagram b v n m] -> SubMap b v n m
SubMap
instance Rewrapped (SubMap b v n m) (SubMap b' v' n' m')
type instance V (SubMap b v n m) = v
type instance N (SubMap b v n m) = n
instance Functor (SubMap b v n) where
fmap :: (a -> b) -> SubMap b v n a -> SubMap b v n b
fmap = ASetter
(SubMap b v n a)
(SubMap b v n b)
(Map Name [Subdiagram b v n a])
(Map Name [Subdiagram b v n b])
-> (Map Name [Subdiagram b v n a] -> Map Name [Subdiagram b v n b])
-> SubMap b v n a
-> SubMap b v n b
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(SubMap b v n a)
(SubMap b v n b)
(Map Name [Subdiagram b v n a])
(Map Name [Subdiagram b v n b])
forall s t. Rewrapping s t => Iso s t (Unwrapped s) (Unwrapped t)
_Wrapped ((Map Name [Subdiagram b v n a] -> Map Name [Subdiagram b v n b])
-> SubMap b v n a -> SubMap b v n b)
-> ((a -> b)
-> Map Name [Subdiagram b v n a] -> Map Name [Subdiagram b v n b])
-> (a -> b)
-> SubMap b v n a
-> SubMap b v n b
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Subdiagram b v n a] -> [Subdiagram b v n b])
-> Map Name [Subdiagram b v n a] -> Map Name [Subdiagram b v n b]
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (([Subdiagram b v n a] -> [Subdiagram b v n b])
-> Map Name [Subdiagram b v n a] -> Map Name [Subdiagram b v n b])
-> ((a -> b) -> [Subdiagram b v n a] -> [Subdiagram b v n b])
-> (a -> b)
-> Map Name [Subdiagram b v n a]
-> Map Name [Subdiagram b v n b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Subdiagram b v n a -> Subdiagram b v n b)
-> [Subdiagram b v n a] -> [Subdiagram b v n b]
forall a b. (a -> b) -> [a] -> [b]
map ((Subdiagram b v n a -> Subdiagram b v n b)
-> [Subdiagram b v n a] -> [Subdiagram b v n b])
-> ((a -> b) -> Subdiagram b v n a -> Subdiagram b v n b)
-> (a -> b)
-> [Subdiagram b v n a]
-> [Subdiagram b v n b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (a -> b) -> Subdiagram b v n a -> Subdiagram b v n b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap
instance Semigroup (SubMap b v n m) where
SubMap Map Name [Subdiagram b v n m]
s1 <> :: SubMap b v n m -> SubMap b v n m -> SubMap b v n m
<> SubMap Map Name [Subdiagram b v n m]
s2 = Map Name [Subdiagram b v n m] -> SubMap b v n m
forall b (v :: * -> *) n m.
Map Name [Subdiagram b v n m] -> SubMap b v n m
SubMap (Map Name [Subdiagram b v n m] -> SubMap b v n m)
-> Map Name [Subdiagram b v n m] -> SubMap b v n m
forall a b. (a -> b) -> a -> b
$ ([Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m])
-> Map Name [Subdiagram b v n m]
-> Map Name [Subdiagram b v n m]
-> Map Name [Subdiagram b v n m]
forall k a. Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
M.unionWith [Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m]
forall a. [a] -> [a] -> [a]
(++) Map Name [Subdiagram b v n m]
s1 Map Name [Subdiagram b v n m]
s2
instance Monoid (SubMap b v n m) where
mempty :: SubMap b v n m
mempty = Map Name [Subdiagram b v n m] -> SubMap b v n m
forall b (v :: * -> *) n m.
Map Name [Subdiagram b v n m] -> SubMap b v n m
SubMap Map Name [Subdiagram b v n m]
forall k a. Map k a
M.empty
mappend :: SubMap b v n m -> SubMap b v n m -> SubMap b v n m
mappend = SubMap b v n m -> SubMap b v n m -> SubMap b v n m
forall a. Semigroup a => a -> a -> a
(<>)
instance (OrderedField n, Metric v)
=> HasOrigin (SubMap b v n m) where
moveOriginTo :: Point (V (SubMap b v n m)) (N (SubMap b v n m))
-> SubMap b v n m -> SubMap b v n m
moveOriginTo = ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
-> (Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m
-> SubMap b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m -> SubMap b v n m)
-> (Point v n
-> Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> Point v n
-> SubMap b v n m
-> SubMap b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Point v n
-> Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m]
forall t. HasOrigin t => Point (V t) (N t) -> t -> t
moveOriginTo
instance Transformable (SubMap b v n m) where
transform :: Transformation (V (SubMap b v n m)) (N (SubMap b v n m))
-> SubMap b v n m -> SubMap b v n m
transform = ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
-> (Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m
-> SubMap b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m -> SubMap b v n m)
-> (Transformation v n
-> Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> Transformation v n
-> SubMap b v n m
-> SubMap b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Transformation v n
-> Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m]
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform
instance Qualifiable (SubMap b v n m) where
a
a .>> :: a -> SubMap b v n m -> SubMap b v n m
.>> (SubMap Map Name [Subdiagram b v n m]
m) = Map Name [Subdiagram b v n m] -> SubMap b v n m
forall b (v :: * -> *) n m.
Map Name [Subdiagram b v n m] -> SubMap b v n m
SubMap (Map Name [Subdiagram b v n m] -> SubMap b v n m)
-> Map Name [Subdiagram b v n m] -> SubMap b v n m
forall a b. (a -> b) -> a -> b
$ (Name -> Name)
-> Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m]
forall k2 k1 a. Ord k2 => (k1 -> k2) -> Map k1 a -> Map k2 a
M.mapKeys (a
a a -> Name -> Name
forall q a. (Qualifiable q, IsName a) => a -> q -> q
.>>) Map Name [Subdiagram b v n m]
m
fromNames :: IsName a => [(a, Subdiagram b v n m)] -> SubMap b v n m
fromNames :: [(a, Subdiagram b v n m)] -> SubMap b v n m
fromNames = Map Name [Subdiagram b v n m] -> SubMap b v n m
forall b (v :: * -> *) n m.
Map Name [Subdiagram b v n m] -> SubMap b v n m
SubMap (Map Name [Subdiagram b v n m] -> SubMap b v n m)
-> ([(a, Subdiagram b v n m)] -> Map Name [Subdiagram b v n m])
-> [(a, Subdiagram b v n m)]
-> SubMap b v n m
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ([Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m])
-> [(Name, [Subdiagram b v n m])] -> Map Name [Subdiagram b v n m]
forall k a. Ord k => (a -> a -> a) -> [(k, a)] -> Map k a
M.fromListWith [Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m]
forall a. [a] -> [a] -> [a]
(++) ([(Name, [Subdiagram b v n m])] -> Map Name [Subdiagram b v n m])
-> ([(a, Subdiagram b v n m)] -> [(Name, [Subdiagram b v n m])])
-> [(a, Subdiagram b v n m)]
-> Map Name [Subdiagram b v n m]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((a, Subdiagram b v n m) -> (Name, [Subdiagram b v n m]))
-> [(a, Subdiagram b v n m)] -> [(Name, [Subdiagram b v n m])]
forall a b. (a -> b) -> [a] -> [b]
map (a -> Name
forall a. IsName a => a -> Name
toName (a -> Name)
-> (Subdiagram b v n m -> [Subdiagram b v n m])
-> (a, Subdiagram b v n m)
-> (Name, [Subdiagram b v n m])
forall (a :: * -> * -> *) b c b' c'.
Arrow a =>
a b c -> a b' c' -> a (b, b') (c, c')
*** (Subdiagram b v n m -> [Subdiagram b v n m] -> [Subdiagram b v n m]
forall a. a -> [a] -> [a]
:[]))
rememberAs :: IsName a => a -> QDiagram b v n m -> SubMap b v n m -> SubMap b v n m
rememberAs :: a -> QDiagram b v n m -> SubMap b v n m -> SubMap b v n m
rememberAs a
n QDiagram b v n m
b = ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
-> (Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m
-> SubMap b v n m
forall s t a b. ASetter s t a b -> (a -> b) -> s -> t
over ASetter
(SubMap b v n m)
(SubMap b v n m)
(Map Name [Subdiagram b v n m])
(Map Name [Subdiagram b v n m])
forall s. Wrapped s => Iso' s (Unwrapped s)
_Wrapped' ((Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m -> SubMap b v n m)
-> (Map Name [Subdiagram b v n m] -> Map Name [Subdiagram b v n m])
-> SubMap b v n m
-> SubMap b v n m
forall a b. (a -> b) -> a -> b
$ ([Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m])
-> Name
-> [Subdiagram b v n m]
-> Map Name [Subdiagram b v n m]
-> Map Name [Subdiagram b v n m]
forall k a. Ord k => (a -> a -> a) -> k -> a -> Map k a -> Map k a
M.insertWith [Subdiagram b v n m]
-> [Subdiagram b v n m] -> [Subdiagram b v n m]
forall a. [a] -> [a] -> [a]
(++) (a -> Name
forall a. IsName a => a -> Name
toName a
n) [QDiagram b v n m -> Subdiagram b v n m
forall b (v :: * -> *) n m. QDiagram b v n m -> Subdiagram b v n m
mkSubdiagram QDiagram b v n m
b]
instance Action Name (SubMap b v n m) where
act :: Name -> SubMap b v n m -> SubMap b v n m
act = Name -> SubMap b v n m -> SubMap b v n m
forall q a. (Qualifiable q, IsName a) => a -> q -> q
(.>>)
instance Action Name a => Action Name (Deletable a) where
act :: Name -> Deletable a -> Deletable a
act Name
n (Deletable Int
l a
a Int
r) = Int -> a -> Int -> Deletable a
forall m. Int -> m -> Int -> Deletable m
Deletable Int
l (Name -> a -> a
forall m s. Action m s => m -> s -> s
act Name
n a
a) Int
r
instance Action Name (Query v n m)
instance Action Name (Envelope v n)
instance Action Name (Trace v n)
lookupSub :: IsName nm => nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]
lookupSub :: nm -> SubMap b v n m -> Maybe [Subdiagram b v n m]
lookupSub nm
a (SubMap Map Name [Subdiagram b v n m]
m)
= Name -> Map Name [Subdiagram b v n m] -> Maybe [Subdiagram b v n m]
forall k a. Ord k => k -> Map k a -> Maybe a
M.lookup Name
n Map Name [Subdiagram b v n m]
m Maybe [Subdiagram b v n m]
-> Maybe [Subdiagram b v n m] -> Maybe [Subdiagram b v n m]
forall (m :: * -> *) a. MonadPlus m => m a -> m a -> m a
`mplus`
([(Name, [Subdiagram b v n m])] -> Maybe [Subdiagram b v n m]
forall a b. [(a, [b])] -> Maybe [b]
flattenNames ([(Name, [Subdiagram b v n m])] -> Maybe [Subdiagram b v n m])
-> (Map Name [Subdiagram b v n m]
-> [(Name, [Subdiagram b v n m])])
-> Map Name [Subdiagram b v n m]
-> Maybe [Subdiagram b v n m]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((Name, [Subdiagram b v n m]) -> Bool)
-> [(Name, [Subdiagram b v n m])] -> [(Name, [Subdiagram b v n m])]
forall a. (a -> Bool) -> [a] -> [a]
filter ((Name
n Name -> Name -> Bool
`nameSuffixOf`) (Name -> Bool)
-> ((Name, [Subdiagram b v n m]) -> Name)
-> (Name, [Subdiagram b v n m])
-> Bool
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (Name, [Subdiagram b v n m]) -> Name
forall a b. (a, b) -> a
fst) ([(Name, [Subdiagram b v n m])] -> [(Name, [Subdiagram b v n m])])
-> (Map Name [Subdiagram b v n m]
-> [(Name, [Subdiagram b v n m])])
-> Map Name [Subdiagram b v n m]
-> [(Name, [Subdiagram b v n m])]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Map Name [Subdiagram b v n m] -> [(Name, [Subdiagram b v n m])]
forall k a. Map k a -> [(k, a)]
M.assocs (Map Name [Subdiagram b v n m] -> Maybe [Subdiagram b v n m])
-> Map Name [Subdiagram b v n m] -> Maybe [Subdiagram b v n m]
forall a b. (a -> b) -> a -> b
$ Map Name [Subdiagram b v n m]
m)
where (Name [AName]
n1) nameSuffixOf :: Name -> Name -> Bool
`nameSuffixOf` (Name [AName]
n2) = [AName]
n1 [AName] -> [AName] -> Bool
forall a. Eq a => [a] -> [a] -> Bool
`isSuffixOf` [AName]
n2
flattenNames :: [(a, [b])] -> Maybe [b]
flattenNames [] = Maybe [b]
forall a. Maybe a
Nothing
flattenNames [(a, [b])]
xs = [b] -> Maybe [b]
forall a. a -> Maybe a
Just ([b] -> Maybe [b])
-> ([(a, [b])] -> [b]) -> [(a, [b])] -> Maybe [b]
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ((a, [b]) -> [b]) -> [(a, [b])] -> [b]
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap (a, [b]) -> [b]
forall a b. (a, b) -> b
snd ([(a, [b])] -> Maybe [b]) -> [(a, [b])] -> Maybe [b]
forall a b. (a -> b) -> a -> b
$ [(a, [b])]
xs
n :: Name
n = nm -> Name
forall a. IsName a => a -> Name
toName nm
a
data Prim b v n where
Prim :: (Transformable p, Typeable p, Renderable p b) => p -> Prim b (V p) (N p)
_Prim :: (Typeable p, Renderable p b) => Prism' (Prim b (V p) (N p)) p
_Prim :: Prism' (Prim b (V p) (N p)) p
_Prim = (p -> Prim b (V p) (N p))
-> (Prim b (V p) (N p) -> Maybe p) -> Prism' (Prim b (V p) (N p)) p
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' p -> Prim b (V p) (N p)
forall p b.
(Transformable p, Typeable p, Renderable p b) =>
p -> Prim b (V p) (N p)
Prim (\(Prim p
p) -> p -> Maybe p
forall a b. (Typeable a, Typeable b) => a -> Maybe b
cast p
p)
type instance V (Prim b v n) = v
type instance N (Prim b v n) = n
instance Transformable (Prim b v n) where
transform :: Transformation (V (Prim b v n)) (N (Prim b v n))
-> Prim b v n -> Prim b v n
transform Transformation (V (Prim b v n)) (N (Prim b v n))
t (Prim p
p) = p -> Prim b (V p) (N p)
forall p b.
(Transformable p, Typeable p, Renderable p b) =>
p -> Prim b (V p) (N p)
Prim (Transformation (V p) (N p) -> p -> p
forall t. Transformable t => Transformation (V t) (N t) -> t -> t
transform Transformation (V p) (N p)
Transformation (V (Prim b v n)) (N (Prim b v n))
t p
p)
instance Renderable (Prim b v n) b where
render :: b -> Prim b v n -> Render b (V (Prim b v n)) (N (Prim b v n))
render b
b (Prim p
p) = b -> p -> Render b (V p) (N p)
forall t b. Renderable t b => b -> t -> Render b (V t) (N t)
render b
b p
p
type DTree b v n a = Tree (DNode b v n a)
data DNode b v n a = DStyle (Style v n)
| DTransform (Transformation v n)
| DAnnot a
| DDelay
| DPrim (Prim b v n)
| DEmpty
type RTree b v n a = Tree (RNode b v n a)
data RNode b v n a = RStyle (Style v n)
| RAnnot a
| RPrim (Prim b v n)
| REmpty
_RStyle :: Prism' (RNode b v n a) (Style v n)
_RStyle :: p (Style v n) (f (Style v n))
-> p (RNode b v n a) (f (RNode b v n a))
_RStyle = (Style v n -> RNode b v n a)
-> (RNode b v n a -> Maybe (Style v n))
-> Prism (RNode b v n a) (RNode b v n a) (Style v n) (Style v n)
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' Style v n -> RNode b v n a
forall b (v :: * -> *) n a. Style v n -> RNode b v n a
RStyle ((RNode b v n a -> Maybe (Style v n))
-> Prism (RNode b v n a) (RNode b v n a) (Style v n) (Style v n))
-> (RNode b v n a -> Maybe (Style v n))
-> Prism (RNode b v n a) (RNode b v n a) (Style v n) (Style v n)
forall a b. (a -> b) -> a -> b
$ \RNode b v n a
n -> case RNode b v n a
n of RStyle Style v n
s -> Style v n -> Maybe (Style v n)
forall a. a -> Maybe a
Just Style v n
s; RNode b v n a
_ -> Maybe (Style v n)
forall a. Maybe a
Nothing
_RAnnot :: Prism' (RNode b v n a) a
_RAnnot :: p a (f a) -> p (RNode b v n a) (f (RNode b v n a))
_RAnnot = (a -> RNode b v n a)
-> (RNode b v n a -> Maybe a)
-> Prism (RNode b v n a) (RNode b v n a) a a
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' a -> RNode b v n a
forall b (v :: * -> *) n a. a -> RNode b v n a
RAnnot ((RNode b v n a -> Maybe a)
-> Prism (RNode b v n a) (RNode b v n a) a a)
-> (RNode b v n a -> Maybe a)
-> Prism (RNode b v n a) (RNode b v n a) a a
forall a b. (a -> b) -> a -> b
$ \RNode b v n a
n -> case RNode b v n a
n of RAnnot a
a -> a -> Maybe a
forall a. a -> Maybe a
Just a
a; RNode b v n a
_ -> Maybe a
forall a. Maybe a
Nothing
_RPrim :: Prism' (RNode b v n a) (Prim b v n)
_RPrim :: p (Prim b v n) (f (Prim b v n))
-> p (RNode b v n a) (f (RNode b v n a))
_RPrim = (Prim b v n -> RNode b v n a)
-> (RNode b v n a -> Maybe (Prim b v n))
-> Prism (RNode b v n a) (RNode b v n a) (Prim b v n) (Prim b v n)
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' Prim b v n -> RNode b v n a
forall b (v :: * -> *) n a. Prim b v n -> RNode b v n a
RPrim ((RNode b v n a -> Maybe (Prim b v n))
-> Prism (RNode b v n a) (RNode b v n a) (Prim b v n) (Prim b v n))
-> (RNode b v n a -> Maybe (Prim b v n))
-> Prism (RNode b v n a) (RNode b v n a) (Prim b v n) (Prim b v n)
forall a b. (a -> b) -> a -> b
$ \RNode b v n a
n -> case RNode b v n a
n of RPrim Prim b v n
p -> Prim b v n -> Maybe (Prim b v n)
forall a. a -> Maybe a
Just Prim b v n
p; RNode b v n a
_ -> Maybe (Prim b v n)
forall a. Maybe a
Nothing
_REmpty :: Prism' (RNode b v n a) ()
_REmpty :: p () (f ()) -> p (RNode b v n a) (f (RNode b v n a))
_REmpty = (() -> RNode b v n a)
-> (RNode b v n a -> Maybe ())
-> Prism (RNode b v n a) (RNode b v n a) () ()
forall b s a. (b -> s) -> (s -> Maybe a) -> Prism s s a b
prism' (RNode b v n a -> () -> RNode b v n a
forall a b. a -> b -> a
const RNode b v n a
forall b (v :: * -> *) n a. RNode b v n a
REmpty) ((RNode b v n a -> Maybe ())
-> Prism (RNode b v n a) (RNode b v n a) () ())
-> (RNode b v n a -> Maybe ())
-> Prism (RNode b v n a) (RNode b v n a) () ()
forall a b. (a -> b) -> a -> b
$ \RNode b v n a
n -> case RNode b v n a
n of RNode b v n a
REmpty -> () -> Maybe ()
forall a. a -> Maybe a
Just (); RNode b v n a
_ -> Maybe ()
forall a. Maybe a
Nothing
class Backend b v n where
data Render b v n :: *
type Result b v n :: *
data Options b v n :: *
adjustDia :: (Additive v, Monoid' m, Num n) => b -> Options b v n
-> QDiagram b v n m -> (Options b v n, Transformation v n, QDiagram b v n m)
adjustDia b
_ Options b v n
o QDiagram b v n m
d = (Options b v n
o,Transformation v n
forall a. Monoid a => a
mempty,QDiagram b v n m
d)
renderRTree :: b -> Options b v n -> RTree b v n Annotation -> Result b v n
type D v n = QDiagram NullBackend v n Any
data NullBackend
deriving Typeable
instance Semigroup (Render NullBackend v n) where
Render NullBackend v n
_ <> :: Render NullBackend v n
-> Render NullBackend v n -> Render NullBackend v n
<> Render NullBackend v n
_ = Render NullBackend v n
forall (v :: * -> *) n. Render NullBackend v n
NullBackendRender
instance Monoid (Render NullBackend v n) where
mempty :: Render NullBackend v n
mempty = Render NullBackend v n
forall (v :: * -> *) n. Render NullBackend v n
NullBackendRender
#if !MIN_VERSION_base(4,11,0)
mappend = (<>)
#endif
instance Backend NullBackend v n where
data Render NullBackend v n = NullBackendRender
type Result NullBackend v n = ()
data Options NullBackend v n
renderRTree :: NullBackend
-> Options NullBackend v n
-> RTree NullBackend v n Annotation
-> Result NullBackend v n
renderRTree NullBackend
_ Options NullBackend v n
_ RTree NullBackend v n Annotation
_ = ()
class Transformable t => Renderable t b where
render :: b -> t -> Render b (V t) (N t)