content: -- Copyright © 2011 National Institute of Aerospace / Galois, Inc.
  
  {-# LANGUAGE Safe #-}
  
  -- | Primitives to build constant streams.
  module Copilot.Language.Operators.Constant
    ( constant
    , constB
    , constW8
    , constW16
    , constW32
    , constW64
    , constI8
    , constI16
    , constI32
    , constI64
    , constF
    , constD
    ) where
  
  import Copilot.Core (Typed)
  import Copilot.Language.Stream
  
  import Data.Word
  import Data.Int
  
  -- | Create a constant stream that is equal to the given argument, at any
  -- point in time.
  constant :: Typed a => a -> Stream a
  constant = Const
  
  -- | Create a constant stream carrying values of type 'Bool' that is equal to
  -- the given argument, at any point in time.
  constB :: Bool -> Stream Bool
  constB = constant
  
  -- | Create a constant stream carrying values of type 'Word8' that is equal to
  -- the given argument, at any point in time.
  constW8 :: Word8 -> Stream Word8
  constW8 = constant
  
  -- | Create a constant stream carrying values of type 'Word16' that is equal to
  -- the given argument, at any point in time.
  constW16 :: Word16 -> Stream Word16
  constW16 = constant
  
  -- | Create a constant stream carrying values of type 'Word32' that is equal to
  -- the given argument, at any point in time.
  constW32 :: Word32 -> Stream Word32
  constW32 = constant
  
  -- | Create a constant stream carrying values of type 'Word64' that is equal to
  -- the given argument, at any point in time.
  constW64 :: Word64 -> Stream Word64
  constW64 = constant
  
  -- | Create a constant stream carrying values of type 'Int8' that is equal to
  -- the given argument, at any point in time.
  constI8 :: Int8 -> Stream Int8
  constI8 = constant
  
  -- | Create a constant stream carrying values of type 'Int16' that is equal to
  -- the given argument, at any point in time.
  constI16 :: Int16 -> Stream Int16
  constI16 = constant
  
  -- | Create a constant stream carrying values of type 'Int32' that is equal to
  -- the given argument, at any point in time.
  constI32 :: Int32 -> Stream Int32
  constI32 = constant
  
  -- | Create a constant stream carrying values of type 'Int64' that is equal to
  -- the given argument, at any point in time.
  constI64 :: Int64 -> Stream Int64
  constI64 = constant
  
  -- | Create a constant stream carrying values of type 'Float' that is equal to
  -- the given argument, at any point in time.
  constF :: Float -> Stream Float
  constF = constant
  
  -- | Create a constant stream carrying values of type 'Double' that is equal to
  -- the given argument, at any point in time.
  constD :: Double -> Stream Double
  constD = constant
  