clash-prelude-0.11: src/CLaSH/NamedTypes.hs
{- |
Copyright : (C) 2017, QBayLogic
License : BSD2 (see the file LICENSE)
Maintainer : Christiaan Baaij <christiaan.baaij@gmail.com>
Add inline documentation to types:
@
fifo
:: SClock clk
-> SNat addrSize
-> "read request" ::: Signal' clk Bool
-> "write request" ::: Signal' clk (Maybe (BitVector dataSize))
-> ( "q" ::: Signal' clk (BitVector dataSize)
, "full" ::: Signal' clk Bool
, "empty" ::: Signal' clk Bool
)
@
which can subsequently be inspected in the interactive environment:
>>> :t fifo systemClock
fifo systemClock
:: SNat addrSize
-> "read request" ::: Signal' SystemClock Bool
-> "write request"
::: Signal' SystemClock (Maybe (BitVector dataSize))
-> ("q" ::: Signal' SystemClock (BitVector dataSize),
"full" ::: Signal' SystemClock Bool,
"empty" ::: Signal' SystemClock Bool)
-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE Safe #-}
{-# OPTIONS_HADDOCK show-extensions #-}
module CLaSH.NamedTypes
((:::))
where
type (name :: k) ::: a = a
-- ^ Annotate a type with a name
{- $setup
>>> :set -XDataKinds -XTypeOperators -XNoImplicitPrelude
>>> import CLaSH.Prelude
>>> import CLaSH.Prelude.Explicit
>>> :{
let fifo
:: SClock clk
-> SNat addrSize
-> "read request" ::: Signal' clk Bool
-> "write request" ::: Signal' clk (Maybe (BitVector dataSize))
-> ( "q" ::: Signal' clk (BitVector dataSize)
, "full" ::: Signal' clk Bool
, "empty" ::: Signal' clk Bool
)
fifo = CLaSH.Prelude.undefined
:}
-}