tao-example-1.0.0: Example usage of the tao package.

Safe HaskellSafe
LanguageHaskell2010

Tao.Example

Contents

Synopsis

Example Usage

tao-example provides example usages of the tao package to test some slightly more complicated type-level computations than what is shown the the tao package's Getting Started section. tao-example tests three different type functions: Take, Drop, and Chunk. The implementations of these type functions are available in Tao.Example.List.

  • Take grabs the first n elements from a type-level list, where n is a Nat. This is similar to the value-level take function.
  • Drop discards the first n elements from a type-level list, where n is a Nat. This is similar to the value-level drop function.
  • Chunk groups the type-level list into sub-lists each of size n, where n is a Nat.

Unit tests

unitTests :: Proxy () Source #

Implementation:

unitTests :: Proxy '()
unitTests = Proxy :: Proxy (AssertAll
  '[ "Take" @<> OneTwo @=? Take 2 OneToFour
   , "Take (none)" @<> Empty @=? Take 0 OneToFour
   , "Take (more than length)" @<> OneToFour @=? Take 8 OneToFour

   , "Drop" @<> ThreeFour @=? Drop 2 OneToFour
   , "Drop (none)" @<> OneToFour @=? Drop 0 OneToFour
   , "Drop (more than length)" @<> Empty @=? Drop 8 OneToFour

   , "Chunk" @<> '[OneTwo, ThreeFour] @=? Chunk 2 OneToFour
   , "Chunk (none)" @<> Empty @=? Chunk 0 OneToFour
   , "Chunk (more than length)" @<> '[OneToFour] @=? Chunk 8 OneToFour
   , "Chunk (uneven groups)" @<> '[ '[1, 2, 3], '[4] ] @=? Chunk 3 OneToFour
   ])

Type synonyms (for readability)

type OneToFour = '[1, 2, 3, 4] Source #

type OneTwo = '[1, 2] Source #

type ThreeFour = '[3, 4] Source #

type Empty = '[] Source #