packages feed

traverse-code-0.1: test/TraverseCodeTest.hs

{-# language TemplateHaskell #-}
module Main (main) where

import Language.Haskell.TH.TraverseCode
import qualified Data.Functor.Product as FP
import Data.Functor.Sum
import qualified Data.Sequence as S

boom :: a -> (Int, a)
boom a = $$(sequenceCode (12, [|| a ||]))

zorp :: Bool -> a -> Either Int a
zorp False a = $$(sequenceCode (Left 4))
zorp True a = $$(sequenceCode (Right [||a||]))

goo :: a -> a -> Maybe a -> FP.Product [] Maybe a
goo x1 x2 Nothing = $$(sequenceCode (FP.Pair [ [||x1||], [||x2||] ] Nothing))
goo x1 x2 (Just y) = $$(sequenceCode (FP.Pair [ [||x1||], [||x2||] ] (Just [||y||])))

emptySeq :: S.Seq a
emptySeq = $$(sequenceCode (S.fromList []))

single :: a -> S.Seq a
single a = $$(sequenceCode (S.fromList [ [||a||] ]))

double :: a -> a -> S.Seq a
double a b = $$(sequenceCode (S.fromList [ [||a||], [||b||] ]))

triple :: a -> a -> a -> S.Seq a
triple a b c = $$(sequenceCode (S.fromList [ [||a||], [||b||], [||c||] ]))

seq10 :: a -> a -> a -> a -> a ->
         a -> a -> a -> a -> a -> S.Seq a
seq10 a b c d e  f g h i j = $$(traverseCode id (S.fromList
   [ [||a||], [||b||], [||c||], [||d||], [||e||], [||f||], [||g||], [||h||],[||i||],[||j||] ]))

seq11 :: a -> a -> a -> a -> a ->
         a -> a -> a -> a -> a -> a -> S.Seq a
seq11 a b c d e  f g h i j k = $$(traverseCode id $ S.reverse (S.fromList
   [ [||a||], [||b||], [||c||], [||d||], [||e||], [||f||], [||g||], [||h||],[||i||],[||j||],[||k||] ]))

main :: IO ()
main = putStrLn "Test suite not yet implemented."