-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | A Haskell-embedded DSL for monitoring hard real-time
distributed systems.
--
-- The concrete syntax for Copilot.
--
-- Copilot is a stream (i.e., infinite lists) domain-specific language
-- (DSL) in Haskell that compiles into embedded C. Copilot contains an
-- interpreter, multiple back-end compilers, and other verification
-- tools. A tutorial, bug reports, and todos are available at
-- https://github.com/niswegmann/copilot-discussion.
--
-- Examples are available at
-- https://github.com/leepike/Copilot/tree/master/Examples.
@package copilot-language
@version 0.9.1
-- | Reexports Prelude from package base hiding identifiers
-- redefined by Copilot.
module Copilot.Language.Prelude
-- | Bitwise operators.
module Copilot.Language.Operators.BitWise
-- | The Bits class defines bitwise operations over integral types.
--
--
-- - Bits are numbered from 0 with bit 0 being the least significant
-- bit.
--
--
-- Minimal complete definition: .&., .|., xor,
-- complement, (shift or (shiftL and
-- shiftR)), (rotate or (rotateL and
-- rotateR)), bitSize and isSigned.
class (Eq a, Num a) => Bits a
(.&.) :: Bits a => a -> a -> a
(.|.) :: Bits a => a -> a -> a
complement :: Bits a => a -> a
(.^.) :: Bits a => a -> a -> a
(.<<., .>>.) :: (Bits a, Typed a, Typed b, Integral b) => Stream a -> Stream b -> Stream a
instance [safe] (Typed a, Bits a) => Bits (Stream a)
-- | Stream construction.
module Copilot.Language.Operators.Temporal
(++) :: Typed a => [a] -> Stream a -> Stream a
drop :: Typed a => Int -> Stream a -> Stream a
-- | Comparison operators.
module Copilot.Language.Operators.Ord
(<=) :: (Ord a, Typed a) => Stream a -> Stream a -> Stream Bool
(>=) :: (Ord a, Typed a) => Stream a -> Stream a -> Stream Bool
(<) :: (Ord a, Typed a) => Stream a -> Stream a -> Stream Bool
(>) :: (Ord a, Typed a) => Stream a -> Stream a -> Stream Bool
-- | if-then-else.
module Copilot.Language.Operators.Mux
mux :: Typed a => Stream Bool -> Stream a -> Stream a -> Stream a
ifThenElse :: Typed a => Stream Bool -> Stream a -> Stream a -> Stream a
-- | Integral class operators.
module Copilot.Language.Operators.Integral
div :: (Typed a, Integral a) => Stream a -> Stream a -> Stream a
mod :: (Typed a, Integral a) => Stream a -> Stream a -> Stream a
(^) :: (Typed a, Typed b, Num a, Bits a, Integral b) => Stream a -> Stream b -> Stream a
-- | Let expressions.
module Copilot.Language.Operators.Local
local :: (Typed a, Typed b) => Stream a -> (Stream a -> Stream b) -> Stream b
-- | External variables, arrays, and functions.
module Copilot.Language.Operators.Extern
extern :: Typed a => String -> Maybe [a] -> Stream a
externB :: String -> Maybe [Bool] -> Stream Bool
externW8 :: String -> Maybe [Word8] -> Stream Word8
externW16 :: String -> Maybe [Word16] -> Stream Word16
externW32 :: String -> Maybe [Word32] -> Stream Word32
externW64 :: String -> Maybe [Word64] -> Stream Word64
externI8 :: String -> Maybe [Int8] -> Stream Int8
externI16 :: String -> Maybe [Int16] -> Stream Int16
externI32 :: String -> Maybe [Int32] -> Stream Int32
externI64 :: String -> Maybe [Int64] -> Stream Int64
externF :: String -> Maybe [Float] -> Stream Float
externD :: String -> Maybe [Double] -> Stream Double
externFun :: Typed a => String -> [Arg] -> Maybe (Stream a) -> Stream a
externArray :: (Typed a, Typed b, Integral a) => String -> Stream a -> Size -> Maybe [[b]] -> Stream b
externArrayB :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Bool]] -> Stream Bool
externArrayW8 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Word8]] -> Stream Word8
externArrayW16 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Word16]] -> Stream Word16
externArrayW32 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Word32]] -> Stream Word32
externArrayW64 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Word64]] -> Stream Word64
externArrayI8 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Int8]] -> Stream Int8
externArrayI16 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Int16]] -> Stream Int16
externArrayI32 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Int32]] -> Stream Int32
externArrayI64 :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Int64]] -> Stream Int64
externArrayF :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Float]] -> Stream Float
externArrayD :: (Typed a, Integral a) => String -> Stream a -> Size -> Maybe [[Double]] -> Stream Double
-- | Deprecated.
funArg :: Typed a => Stream a -> Arg
-- | Equality operator.
module Copilot.Language.Operators.Eq
(==) :: (Eq a, Typed a) => Stream a -> Stream a -> Stream Bool
(/=) :: (Eq a, Typed a) => Stream a -> Stream a -> Stream Bool
-- | Constants.
module Copilot.Language.Operators.Constant
constant :: Typed a => a -> Stream a
constB :: Bool -> Stream Bool
constW8 :: Word8 -> Stream Word8
constW16 :: Word16 -> Stream Word16
constW32 :: Word32 -> Stream Word32
constW64 :: Word64 -> Stream Word64
constI8 :: Int8 -> Stream Int8
constI16 :: Int16 -> Stream Int16
constI32 :: Int32 -> Stream Int32
constI64 :: Int64 -> Stream Int64
constF :: Float -> Stream Float
constD :: Double -> Stream Double
-- | Type-safe casting operators.
module Copilot.Language.Operators.Cast
cast :: (Cast a b, Typed a, Typed b) => Stream a -> Stream b
instance [safe] Cast Int64 Int64
instance [safe] Cast Int32 Int64
instance [safe] Cast Int32 Int32
instance [safe] Cast Int16 Int64
instance [safe] Cast Int16 Int32
instance [safe] Cast Int16 Int16
instance [safe] Cast Int8 Int64
instance [safe] Cast Int8 Int32
instance [safe] Cast Int8 Int16
instance [safe] Cast Int8 Int8
instance [safe] Cast Word64 Word64
instance [safe] Cast Word32 Int64
instance [safe] Cast Word32 Word64
instance [safe] Cast Word32 Word32
instance [safe] Cast Word16 Int64
instance [safe] Cast Word16 Int32
instance [safe] Cast Word16 Word64
instance [safe] Cast Word16 Word32
instance [safe] Cast Word16 Word16
instance [safe] Cast Word8 Int64
instance [safe] Cast Word8 Int32
instance [safe] Cast Word8 Int16
instance [safe] Cast Word8 Word64
instance [safe] Cast Word8 Word32
instance [safe] Cast Word8 Word16
instance [safe] Cast Word8 Word8
instance [safe] Cast Bool Int64
instance [safe] Cast Bool Int32
instance [safe] Cast Bool Int16
instance [safe] Cast Bool Int8
instance [safe] Cast Bool Word64
instance [safe] Cast Bool Word32
instance [safe] Cast Bool Word16
instance [safe] Cast Bool Word8
instance [safe] Cast Bool Bool
-- | Boolean operators.
module Copilot.Language.Operators.Boolean
(&&) :: Stream Bool -> Stream Bool -> Stream Bool
(||) :: Stream Bool -> Stream Bool -> Stream Bool
not :: Stream Bool -> Stream Bool
true :: Stream Bool
false :: Stream Bool
xor :: Stream Bool -> Stream Bool -> Stream Bool
(==>) :: Stream Bool -> Stream Bool -> Stream Bool
-- | Transforms a Copilot Language specification into a Copilot Core
-- specification.
module Copilot.Language.Reify
reify :: Spec -> IO Spec
-- | Main Copilot language export file.
module Copilot.Language
impossible :: String -> String -> a
badUsage :: String -> a
csv :: Integer -> Spec -> IO ()
-- | Much slower, but pretty-printed interpreter output.
interpret :: Integer -> Spec -> IO ()
type Spec = Writer [SpecItem] ()
data Stream :: * -> *
observer :: Typed a => String -> Stream a -> Spec
trigger :: String -> Stream Bool -> [Arg] -> Spec
arg :: Typed a => Stream a -> Arg
prettyPrint :: Spec -> IO ()
-- | Main import module for the front-end lanugage.
module Copilot