Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
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.
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 #
type BusTagUnbundled t a = res | res -> t a Source #
taggedBundle :: BusTagUnbundled t a -> BusTag t a Source #
taggedUnbundle :: BusTag t a -> BusTagUnbundled t a Source #
Instances
BusTagBundle () () Source # | |
Defined in Circuit type BusTagUnbundled () () = (res :: Type) Source # taggedBundle :: BusTagUnbundled () () -> BusTag () () Source # taggedUnbundle :: BusTag () () -> BusTagUnbundled () () Source # | |
BusTagBundle (Vec n t) (Vec n a) Source # | |
Defined in Circuit 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 type BusTagUnbundled (ta, tb) (a, b) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc) (a, b, c) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td) (a, b, c, d) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td, te) (a, b, c, d, e) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td, te, tf) (a, b, c, d, e, f) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td, te, tf, tg) (a, b, c, d, e, f, g) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th) (a, b, c, d, e, f, g, h) = (res :: Type) Source # 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 type BusTagUnbundled (ta, tb, tc, td, te, tf, tg, th, ti) (a, b, c, d, e, f, g, h, i) = (res :: Type) Source # 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 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 # 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 #