-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Example usage of the tao package.
--   
--   Example usage of type-level assertions using tao.
@package tao-example
@version 1.0.0

module Tao.Example.List
type family Take (n :: Nat) (xs :: [k])
type family Drop (n :: Nat) (xs :: [k])
type family Chunk (n :: Nat) (xs :: [k])

module Tao.Example

-- | Implementation:
--   
--   <pre>
--   unitTests :: Proxy '()
--   unitTests = Proxy :: Proxy (AssertAll
--     '[ "Take" @&lt;&gt; OneTwo @=? Take 2 OneToFour
--      , "Take (none)" @&lt;&gt; Empty @=? Take 0 OneToFour
--      , "Take (more than length)" @&lt;&gt; OneToFour @=? Take 8 OneToFour
--   
--      , "Drop" @&lt;&gt; ThreeFour @=? Drop 2 OneToFour
--      , "Drop (none)" @&lt;&gt; OneToFour @=? Drop 0 OneToFour
--      , "Drop (more than length)" @&lt;&gt; Empty @=? Drop 8 OneToFour
--   
--      , "Chunk" @&lt;&gt; '[OneTwo, ThreeFour] @=? Chunk 2 OneToFour
--      , "Chunk (none)" @&lt;&gt; Empty @=? Chunk 0 OneToFour
--      , "Chunk (more than length)" @&lt;&gt; '[OneToFour] @=? Chunk 8 OneToFour
--      , "Chunk (uneven groups)" @&lt;&gt; '[ '[1, 2, 3], '[4] ] @=? Chunk 3 OneToFour
--      ])
--   </pre>
unitTests :: Proxy  '()
type OneToFour = '[1, 2, 3, 4]
type OneTwo = '[1, 2]
type ThreeFour = '[3, 4]
type Empty = '[]
