Safe Haskell | None |
---|---|
Language | Haskell98 |
Synopsis
- newtype Distr w h a = Distr {}
- countFromDistr :: Storable a => Distr w h a -> a
- rowsFromDistr :: Storable a => Size w -> Distr w h a -> [Row w a]
- heightType :: Size h -> Distr w h a -> Distr w h a
- newtype Size2 w h = Size2 Int
- size2FromSizes :: Size w -> Size h -> Size2 w h
- size2 :: (Nat w, Nat h) => Size2 w h
- sizeOfWithSize :: Storable a => Size2 w h -> Distr w h a -> Int
- peekWithSize :: Storable a => Size2 w h -> Ptr (Distr w h a) -> IO (Distr w h a)
- constant :: Storable a => Size2 w h -> a -> Distr w h a
- newtype Row w a = Row {}
- avg :: Integral a => a -> a -> a
- symmetric :: (Integral a, Storable a) => Row w a -> Row w a
- type Count = Word64
- type CountMap = T Count
- type CountDistr w h = Distr w h Count
- type CountDistrMap w h = T w (CountDistr w h)
- type CountDistrPath w h = Path w (CountDistr w h)
- rowFromFrontier :: Nat w => Size w -> Count -> T w -> Row w Count
- addRowToDistr :: Row w Count -> CountDistr w h -> CountDistr w (Succ h)
- addFrontierToDistr :: Nat w => T w -> CountDistr w h -> CountDistr w (Succ h)
- baseCase :: Nat w => CountDistrMap w Zero
- nextFrontierBoundedExternal :: (Nat w, Nat h) => Size w -> T -> CountDistrPath w (Succ h) -> CountDistrMap w h -> IO ()
- bucketSize :: Int
- tmpPath :: Size h -> CountDistrPath w h
- reportCount :: (Nat w, Nat h) => T -> CountDistrPath w h -> IO ()
- withReport :: (Nat w, Nat h) => Bool -> T -> (CountDistrPath w h -> IO ()) -> IOCountDistrPath w h
- newtype IOCountDistrPath w h = IOCountDistrPath {
- runIOCountDistrPath :: IO (CountDistrPath w h)
- distributionBoundedExternal :: (Nat w, Nat h) => Bool -> T -> IO (CountDistrPath w h)
- countExternal :: IO ()
- distributionExternalList :: (Nat w, Nat h) => Size w -> Size h -> T -> IO (Count, [[Count]])
- propCountExternalTotal :: Property
- propCountExternalSimple :: Property
- propCountExternalSymmetric :: Property
- propCountExternalTransposed :: Property
Documentation
We need to encode the height in the type since the Storable instance requires that the size of the binary data can be infered from the Distribution type.
Instances
(Nat w, Nat h, Storable a) => Storable (Distr w h a) Source # | |
Defined in Combinatorics.Battleship.Count.ShortenShip.Distribution sizeOf :: Distr w h a -> Int # alignment :: Distr w h a -> Int # peekElemOff :: Ptr (Distr w h a) -> Int -> IO (Distr w h a) # pokeElemOff :: Ptr (Distr w h a) -> Int -> Distr w h a -> IO () # peekByteOff :: Ptr b -> Int -> IO (Distr w h a) # pokeByteOff :: Ptr b -> Int -> Distr w h a -> IO () # | |
Storable a => NFData (Distr w h a) Source # | |
(Nat w, Nat h, C a, Storable a) => C (Distr w h a) Source # | |
countFromDistr :: Storable a => Distr w h a -> a Source #
type CountDistr w h = Distr w h Count Source #
type CountDistrMap w h = T w (CountDistr w h) Source #
type CountDistrPath w h = Path w (CountDistr w h) Source #
addRowToDistr :: Row w Count -> CountDistr w h -> CountDistr w (Succ h) Source #
addFrontierToDistr :: Nat w => T w -> CountDistr w h -> CountDistr w (Succ h) Source #
nextFrontierBoundedExternal :: (Nat w, Nat h) => Size w -> T -> CountDistrPath w (Succ h) -> CountDistrMap w h -> IO () Source #
bucketSize :: Int Source #
tmpPath :: Size h -> CountDistrPath w h Source #
reportCount :: (Nat w, Nat h) => T -> CountDistrPath w h -> IO () Source #
withReport :: (Nat w, Nat h) => Bool -> T -> (CountDistrPath w h -> IO ()) -> IOCountDistrPath w h Source #
newtype IOCountDistrPath w h Source #
distributionBoundedExternal :: (Nat w, Nat h) => Bool -> T -> IO (CountDistrPath w h) Source #
countExternal :: IO () Source #