{- | Copyright : (C) 2017, QBayLogic License : BSD2 (see the file LICENSE) Maintainer : Christiaan Baaij 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 :} -}