| Copyright | (C) 2013-2015, University of Twente |
|---|---|
| License | BSD2 (see the file LICENSE) |
| Maintainer | Christiaan Baaij <christiaan.baaij@gmail.com> |
| Safe Haskell | Trustworthy |
| Language | Haskell2010 |
| Extensions |
|
CLaSH.Signal.Bundle
Description
The Product/Signal isomorphism
- class Bundle a where
- type Unbundled' clk a
- bundle' :: SClock clk -> Unbundled' clk a -> Signal' clk a
- unbundle' :: SClock clk -> Signal' clk a -> Unbundled' clk a
Documentation
Isomorphism between a Signal of a product type (e.g. a tuple) and a
product type of Signal's.
Instances of Bundle must satisfy the following laws:
bundle'.unbundle'=idunbundle'.bundle'=id
By default, bundle' and unbundle', are defined as the identity, that is,
writing:
data D = A | B
instance Bundle D
is the same as:
data D = A | B instanceBundleD where typeUnbundled'clk D =Signal'clk Dbundle'_ s = sunbundle'_ s = s
Minimal complete definition
Nothing
Associated Types
type Unbundled' clk a Source
Methods
bundle' :: SClock clk -> Unbundled' clk a -> Signal' clk a Source
Example:
bundle' :: (Signal'clk a,Signal'clk b) ->Signal'clk (a,b)
However:
bundle' ::Signal'clkBit->Signal'clkBit
unbundle' :: SClock clk -> Signal' clk a -> Unbundled' clk a Source
Instances
| Bundle Bool Source | |
| Bundle Double Source | |
| Bundle Float Source | |
| Bundle Int Source | |
| Bundle Integer Source | |
| Bundle () Source | |
| Bundle (Maybe a) Source | |
| Bundle (BitVector n) Source | |
| Bundle (Index n) Source | |
| Bundle (Signed n) Source | |
| Bundle (Unsigned n) Source | |
| Bundle (Either a b) Source | |
| Bundle (a, b) Source | |
| KnownNat n => Bundle (Vec n a) Source | |
| Bundle (a, b, c) Source | |
| Bundle (Fixed rep int frac) Source | |
| Bundle (a, b, c, d) Source | |
| Bundle (a, b, c, d, e) Source | |
| Bundle (a, b, c, d, e, f) Source | |
| Bundle (a, b, c, d, e, f, g) Source | |
| Bundle (a, b, c, d, e, f, g, h) Source |