| Safe Haskell | Safe-Inferred | 
|---|---|
| Language | Haskell2010 | 
Circuit
Synopsis
- pattern (:>!) :: a -> Vec n a -> Vec (n + 1) a
 - type family Fwd a
 - type family Bwd a
 - data a :-> b = a :-> b
 - idC :: Circuit a a
 - data DF (dom :: Domain) a
 - data DFM2S a = DFM2S Bool a
 - newtype DFS2M = DFS2M Bool
 - newtype Circuit a b = Circuit {
- runCircuit :: CircuitT a b
 
 - type CircuitT a b = (Fwd a :-> Bwd b) -> Bwd a :-> Fwd b
 - type TagCircuitT a b = (BusTag a (Fwd a) :-> BusTag b (Bwd b)) -> BusTag a (Bwd a) :-> BusTag b (Fwd b)
 - newtype BusTag t b = BusTag {
- unBusTag :: b
 
 - mkTagCircuit :: TagCircuitT a b -> Circuit a b
 - runTagCircuit :: Circuit a b -> TagCircuitT a b
 - pattern TagCircuit :: TagCircuitT a b -> Circuit a b
 - class TrivialBwd a where
- unitBwd :: a
 
 - class BusTagBundle t a where
- type BusTagUnbundled t a = res | res -> t a
 - taggedBundle :: BusTagUnbundled t a -> BusTag t a
 - taggedUnbundle :: BusTag t a -> BusTagUnbundled t a
 
 - pattern BusTagBundle :: BusTagBundle t a => BusTagUnbundled t a -> BusTag t a
 
Documentation
pattern (:>!) :: a -> Vec n a -> Vec (n + 1) a infixr 5 Source #
Unsafe version of :>. Will fail if applied to empty vectors. This is used to
 workaround spurious incomplete pattern match warnings generated in newer GHC
 versions.
data a :-> b infixr 0 Source #
A type to symbolise arguments going to results of a circuit.
Constructors
| a :-> b infixr 0 | 
type TagCircuitT a b = (BusTag a (Fwd a) :-> BusTag b (Bwd b)) -> BusTag a (Bwd a) :-> BusTag b (Fwd b) Source #
Instances
| TrivialBwd a => TrivialBwd (BusTag t a) Source # | |
mkTagCircuit :: TagCircuitT a b -> Circuit a b Source #
runTagCircuit :: Circuit a b -> TagCircuitT a b Source #
pattern TagCircuit :: TagCircuitT a b -> Circuit a b Source #
class TrivialBwd a where Source #
Instances
class BusTagBundle t a where Source #
Associated Types
type BusTagUnbundled t a = res | res -> t a Source #
Methods
taggedBundle :: BusTagUnbundled t a -> BusTag t a Source #
taggedUnbundle :: BusTag t a -> BusTagUnbundled t a Source #
Instances
| BusTagBundle () () Source # | |
Defined in Circuit Associated Types type BusTagUnbundled () () = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled () () -> BusTag () () Source # taggedUnbundle :: BusTag () () -> BusTagUnbundled () () Source #  | |
| BusTagBundle (Vec n t) (Vec n a) Source # | |
Defined in Circuit Methods taggedBundle :: BusTagUnbundled (Vec n t) (Vec n a) -> BusTag (Vec n t) (Vec n a) Source # taggedUnbundle :: BusTag (Vec n t) (Vec n a) -> BusTagUnbundled (Vec n t) (Vec n a) Source #  | |
| BusTagBundle (ta, tb) (a, b) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb) (a, b) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb) (a, b) -> BusTag (ta, tb) (a, b) Source # taggedUnbundle :: BusTag (ta, tb) (a, b) -> BusTagUnbundled (ta, tb) (a, b) Source #  | |
| BusTagBundle (ta, tb, tc) (a, b, c) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc) (a, b, c) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc) (a, b, c) -> BusTag (ta, tb, tc) (a, b, c) Source # taggedUnbundle :: BusTag (ta, tb, tc) (a, b, c) -> BusTagUnbundled (ta, tb, tc) (a, b, c) Source #  | |
| BusTagBundle (ta, tb, tc, td) (a, b, c, d) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td) (a, b, c, d) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td) (a, b, c, d) -> BusTag (ta, tb, tc, td) (a, b, c, d) Source # taggedUnbundle :: BusTag (ta, tb, tc, td) (a, b, c, d) -> BusTagUnbundled (ta, tb, tc, td) (a, b, c, d) Source #  | |
| BusTagBundle (ta, tb, tc, td, te) (a, b, c, d, e) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te) (a, b, c, d, e) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te) (a, b, c, d, e) -> BusTag (ta, tb, tc, td, te) (a, b, c, d, e) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te) (a, b, c, d, e) -> BusTagUnbundled (ta, tb, tc, td, te) (a, b, c, d, e) Source #  | |
| BusTagBundle (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) -> BusTag (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) -> BusTagUnbundled (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) Source #  | |
| BusTagBundle (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) -> BusTag (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) -> BusTagUnbundled (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) Source #  | |
| BusTagBundle (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) -> BusTag (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) -> BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) Source #  | |
| BusTagBundle (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) -> BusTag (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) -> BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) Source #  | |
| BusTagBundle (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) Source # | |
Defined in Circuit Associated Types type BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) = (res :: Type) Source # Methods taggedBundle :: BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) -> BusTag (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) Source # taggedUnbundle :: BusTag (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) -> BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti, tj) (a, b, c, d, e, f, g, h, i, j) Source #  | |
pattern BusTagBundle :: BusTagBundle t a => BusTagUnbundled t a -> BusTag t a Source #