summaryrefslogtreecommitdiff
path: root/tests/lexers/haskell/example3.txt
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2021-01-18 21:24:00 +0100
committerGeorg Brandl <georg@python.org>2021-01-18 22:08:36 +0100
commit2a3d3a7d5b9c60dedf6638d876161d9563faebcf (patch)
tree809c0b4a686db98f5954afa1944404cd9652c6b2 /tests/lexers/haskell/example3.txt
parentf0445be718da83541ea3401aad882f3937147263 (diff)
downloadpygments-git-examplefiles.tar.gz
Move test_examplefiles to new tests/lexers scheme.examplefiles
Diffstat (limited to 'tests/lexers/haskell/example3.txt')
-rw-r--r--tests/lexers/haskell/example3.txt5019
1 files changed, 5019 insertions, 0 deletions
diff --git a/tests/lexers/haskell/example3.txt b/tests/lexers/haskell/example3.txt
new file mode 100644
index 00000000..8246d11d
--- /dev/null
+++ b/tests/lexers/haskell/example3.txt
@@ -0,0 +1,5019 @@
+---input---
+---------------------------------------------------------------------
+-- SmallCheck: another lightweight testing library.
+-- Colin Runciman, August 2006
+-- Version 0.2 (November 2006)
+--
+-- After QuickCheck, by Koen Claessen and John Hughes (2000-2004).
+---------------------------------------------------------------------
+
+module SmallCheck (
+ smallCheck, depthCheck,
+ Property, Testable,
+ forAll, forAllElem,
+ exists, existsDeeperBy, thereExists, thereExistsElem,
+ (==>),
+ Series, Serial(..),
+ (\/), (><), two, three, four,
+ cons0, cons1, cons2, cons3, cons4,
+ alts0, alts1, alts2, alts3, alts4,
+ N(..), Nat, Natural,
+ depth, inc, dec
+ ) where
+
+import Data.List (intersperse)
+import Control.Monad (when)
+import System.IO (stdout, hFlush)
+
+------------------ <Series of depth-bounded values> -----------------
+
+-- Series arguments should be interpreted as a depth bound (>=0)
+-- Series results should have finite length
+
+type Series a = Int -> [a]
+
+-- sum
+infixr 7 \/
+(\/) :: Series a -> Series a -> Series a
+s1 \/ s2 = \d -> s1 d ++ s2 d
+
+-- product
+infixr 8 ><
+(><) :: Series a -> Series b -> Series (a,b)
+s1 >< s2 = \d -> [(x,y) | x <- s1 d, y <- s2 d]
+
+------------------- <methods for type enumeration> ------------------
+
+-- enumerated data values should be finite and fully defined
+-- enumerated functional values should be total and strict
+
+-- bounds:
+-- for data values, the depth of nested constructor applications
+-- for functional values, both the depth of nested case analysis
+-- and the depth of results
+
+class Serial a where
+ series :: Series a
+ coseries :: Serial b => Series (a->b)
+
+instance Serial () where
+ series _ = [()]
+ coseries d = [ \() -> b
+ | b <- series d ]
+
+instance Serial Int where
+ series d = [(-d)..d]
+ coseries d = [ \i -> if i > 0 then f (N (i - 1))
+ else if i < 0 then g (N (abs i - 1))
+ else z
+ | z <- alts0 d, f <- alts1 d, g <- alts1 d ]
+
+instance Serial Integer where
+ series d = [ toInteger (i :: Int)
+ | i <- series d ]
+ coseries d = [ f . (fromInteger :: Integer->Int)
+ | f <- series d ]
+
+newtype N a = N a
+
+instance Show a => Show (N a) where
+ show (N i) = show i
+
+instance (Integral a, Serial a) => Serial (N a) where
+ series d = map N [0..d']
+ where
+ d' = fromInteger (toInteger d)
+ coseries d = [ \(N i) -> if i > 0 then f (N (i - 1))
+ else z
+ | z <- alts0 d, f <- alts1 d ]
+
+type Nat = N Int
+type Natural = N Integer
+
+instance Serial Float where
+ series d = [ encodeFloat sig exp
+ | (sig,exp) <- series d,
+ odd sig || sig==0 && exp==0 ]
+ coseries d = [ f . decodeFloat
+ | f <- series d ]
+
+instance Serial Double where
+ series d = [ frac (x :: Float)
+ | x <- series d ]
+ coseries d = [ f . (frac :: Double->Float)
+ | f <- series d ]
+
+frac :: (Real a, Fractional a, Real b, Fractional b) => a -> b
+frac = fromRational . toRational
+
+instance Serial Char where
+ series d = take (d+1) ['a'..'z']
+ coseries d = [ \c -> f (N (fromEnum c - fromEnum 'a'))
+ | f <- series d ]
+
+instance (Serial a, Serial b) =>
+ Serial (a,b) where
+ series = series >< series
+ coseries = map uncurry . coseries
+
+instance (Serial a, Serial b, Serial c) =>
+ Serial (a,b,c) where
+ series = \d -> [(a,b,c) | (a,(b,c)) <- series d]
+ coseries = map uncurry3 . coseries
+
+instance (Serial a, Serial b, Serial c, Serial d) =>
+ Serial (a,b,c,d) where
+ series = \d -> [(a,b,c,d) | (a,(b,(c,d))) <- series d]
+ coseries = map uncurry4 . coseries
+
+uncurry3 :: (a->b->c->d) -> ((a,b,c)->d)
+uncurry3 f (x,y,z) = f x y z
+
+uncurry4 :: (a->b->c->d->e) -> ((a,b,c,d)->e)
+uncurry4 f (w,x,y,z) = f w x y z
+
+two :: Series a -> Series (a,a)
+two s = s >< s
+
+three :: Series a -> Series (a,a,a)
+three s = \d -> [(x,y,z) | (x,(y,z)) <- (s >< s >< s) d]
+
+four :: Series a -> Series (a,a,a,a)
+four s = \d -> [(w,x,y,z) | (w,(x,(y,z))) <- (s >< s >< s >< s) d]
+
+cons0 ::
+ a -> Series a
+cons0 c _ = [c]
+
+cons1 :: Serial a =>
+ (a->b) -> Series b
+cons1 c d = [c z | d > 0, z <- series (d-1)]
+
+cons2 :: (Serial a, Serial b) =>
+ (a->b->c) -> Series c
+cons2 c d = [c y z | d > 0, (y,z) <- series (d-1)]
+
+cons3 :: (Serial a, Serial b, Serial c) =>
+ (a->b->c->d) -> Series d
+cons3 c d = [c x y z | d > 0, (x,y,z) <- series (d-1)]
+
+cons4 :: (Serial a, Serial b, Serial c, Serial d) =>
+ (a->b->c->d->e) -> Series e
+cons4 c d = [c w x y z | d > 0, (w,x,y,z) <- series (d-1)]
+
+alts0 :: Serial a =>
+ Series a
+alts0 d = series d
+
+alts1 :: (Serial a, Serial b) =>
+ Series (a->b)
+alts1 d = if d > 0 then series (dec d)
+ else [\_ -> x | x <- series d]
+
+alts2 :: (Serial a, Serial b, Serial c) =>
+ Series (a->b->c)
+alts2 d = if d > 0 then series (dec d)
+ else [\_ _ -> x | x <- series d]
+
+alts3 :: (Serial a, Serial b, Serial c, Serial d) =>
+ Series (a->b->c->d)
+alts3 d = if d > 0 then series (dec d)
+ else [\_ _ _ -> x | x <- series d]
+
+alts4 :: (Serial a, Serial b, Serial c, Serial d, Serial e) =>
+ Series (a->b->c->d->e)
+alts4 d = if d > 0 then series (dec d)
+ else [\_ _ _ _ -> x | x <- series d]
+
+instance Serial Bool where
+ series = cons0 True \/ cons0 False
+ coseries d = [ \x -> if x then b1 else b2
+ | (b1,b2) <- series d ]
+
+instance Serial a => Serial (Maybe a) where
+ series = cons0 Nothing \/ cons1 Just
+ coseries d = [ \m -> case m of
+ Nothing -> z
+ Just x -> f x
+ | z <- alts0 d ,
+ f <- alts1 d ]
+
+instance (Serial a, Serial b) => Serial (Either a b) where
+ series = cons1 Left \/ cons1 Right
+ coseries d = [ \e -> case e of
+ Left x -> f x
+ Right y -> g y
+ | f <- alts1 d ,
+ g <- alts1 d ]
+
+instance Serial a => Serial [a] where
+ series = cons0 [] \/ cons2 (:)
+ coseries d = [ \xs -> case xs of
+ [] -> y
+ (x:xs') -> f x xs'
+ | y <- alts0 d ,
+ f <- alts2 d ]
+
+-- Warning: the coseries instance here may generate duplicates.
+instance (Serial a, Serial b) => Serial (a->b) where
+ series = coseries
+ coseries d = [ \f -> g [f x | x <- series d]
+ | g <- series d ]
+
+-- For customising the depth measure. Use with care!
+
+depth :: Int -> Int -> Int
+depth d d' | d >= 0 = d'+1-d
+ | otherwise = error "SmallCheck.depth: argument < 0"
+
+dec :: Int -> Int
+dec d | d > 0 = d-1
+ | otherwise = error "SmallCheck.dec: argument <= 0"
+
+inc :: Int -> Int
+inc d = d+1
+
+-- show the extension of a function (in part, bounded both by
+-- the number and depth of arguments)
+instance (Serial a, Show a, Show b) => Show (a->b) where
+ show f =
+ if maxarheight == 1
+ && sumarwidth + length ars * length "->;" < widthLimit then
+ "{"++(
+ concat $ intersperse ";" $ [a++"->"++r | (a,r) <- ars]
+ )++"}"
+ else
+ concat $ [a++"->\n"++indent r | (a,r) <- ars]
+ where
+ ars = take lengthLimit [ (show x, show (f x))
+ | x <- series depthLimit ]
+ maxarheight = maximum [ max (height a) (height r)
+ | (a,r) <- ars ]
+ sumarwidth = sum [ length a + length r
+ | (a,r) <- ars]
+ indent = unlines . map (" "++) . lines
+ height = length . lines
+ (widthLimit,lengthLimit,depthLimit) = (80,20,3)::(Int,Int,Int)
+
+---------------- <properties and their evaluation> ------------------
+
+-- adapted from QuickCheck originals: here results come in lists,
+-- properties have depth arguments, stamps (for classifying random
+-- tests) are omitted, existentials are introduced
+
+newtype PR = Prop [Result]
+
+data Result = Result {ok :: Maybe Bool, arguments :: [String]}
+
+nothing :: Result
+nothing = Result {ok = Nothing, arguments = []}
+
+result :: Result -> PR
+result res = Prop [res]
+
+newtype Property = Property (Int -> PR)
+
+class Testable a where
+ property :: a -> Int -> PR
+
+instance Testable Bool where
+ property b _ = Prop [Result (Just b) []]
+
+instance Testable PR where
+ property prop _ = prop
+
+instance (Serial a, Show a, Testable b) => Testable (a->b) where
+ property f = f' where Property f' = forAll series f
+
+instance Testable Property where
+ property (Property f) d = f d
+
+evaluate :: Testable a => a -> Series Result
+evaluate x d = rs where Prop rs = property x d
+
+forAll :: (Show a, Testable b) => Series a -> (a->b) -> Property
+forAll xs f = Property $ \d -> Prop $
+ [ r{arguments = show x : arguments r}
+ | x <- xs d, r <- evaluate (f x) d ]
+
+forAllElem :: (Show a, Testable b) => [a] -> (a->b) -> Property
+forAllElem xs = forAll (const xs)
+
+thereExists :: Testable b => Series a -> (a->b) -> Property
+thereExists xs f = Property $ \d -> Prop $
+ [ Result
+ ( Just $ or [ all pass (evaluate (f x) d)
+ | x <- xs d ] )
+ [] ]
+ where
+ pass (Result Nothing _) = True
+ pass (Result (Just b) _) = b
+
+thereExistsElem :: Testable b => [a] -> (a->b) -> Property
+thereExistsElem xs = thereExists (const xs)
+
+exists :: (Serial a, Testable b) =>
+ (a->b) -> Property
+exists = thereExists series
+
+existsDeeperBy :: (Serial a, Testable b) =>
+ (Int->Int) -> (a->b) -> Property
+existsDeeperBy f = thereExists (series . f)
+
+infixr 0 ==>
+
+(==>) :: Testable a => Bool -> a -> Property
+True ==> x = Property (property x)
+False ==> x = Property (const (result nothing))
+
+--------------------- <top-level test drivers> ----------------------
+
+-- similar in spirit to QuickCheck but with iterative deepening
+
+-- test for values of depths 0..d stopping when a property
+-- fails or when it has been checked for all these values
+smallCheck :: Testable a => Int -> a -> IO String
+smallCheck d = iterCheck 0 (Just d)
+
+depthCheck :: Testable a => Int -> a -> IO String
+depthCheck d = iterCheck d (Just d)
+
+iterCheck :: Testable a => Int -> Maybe Int -> a -> IO String
+iterCheck dFrom mdTo t = iter dFrom
+ where
+ iter :: Int -> IO String
+ iter d = do
+ let Prop results = property t d
+ (ok,s) <- check (mdTo==Nothing) 0 0 True results
+ maybe (iter (d+1))
+ (\dTo -> if ok && d < dTo
+ then iter (d+1)
+ else return s)
+ mdTo
+
+check :: Bool -> Int -> Int -> Bool -> [Result] -> IO (Bool, String)
+check i n x ok rs | null rs = do
+ let s = " Completed "++show n++" test(s)"
+ y = if i then "." else " without failure."
+ z | x > 0 = " But "++show x++" did not meet ==> condition."
+ | otherwise = ""
+ return (ok, s ++ y ++ z)
+
+check i n x ok (Result Nothing _ : rs) = do
+ progressReport i n x
+ check i (n+1) (x+1) ok rs
+
+check i n x f (Result (Just True) _ : rs) = do
+ progressReport i n x
+ check i (n+1) x f rs
+
+check i n x f (Result (Just False) args : rs) = do
+ let s = " Failed test no. "++show (n+1)++". Test values follow."
+ s' = s ++ ": " ++ concat (intersperse ", " args)
+ if i then
+ check i (n+1) x False rs
+ else
+ return (False, s')
+
+progressReport :: Bool -> Int -> Int -> IO ()
+progressReport _ _ _ = return ()
+
+---tokens---
+'---------------------------------------------------------------------' Comment.Single
+'\n' Text
+
+'-- SmallCheck: another lightweight testing library.' Comment.Single
+'\n' Text
+
+'-- Colin Runciman, August 2006' Comment.Single
+'\n' Text
+
+'-- Version 0.2 (November 2006)' Comment.Single
+'\n' Text
+
+'--' Comment.Single
+'\n' Text
+
+'-- After QuickCheck, by Koen Claessen and John Hughes (2000-2004).' Comment.Single
+'\n' Text
+
+'---------------------------------------------------------------------' Comment.Single
+'\n\n' Text
+
+'module' Keyword.Reserved
+' ' Text
+'SmallCheck' Name.Namespace
+' ' Text
+'(' Punctuation
+'\n ' Text
+'smallCheck' Name.Function
+',' Punctuation
+' ' Text
+'depthCheck' Name.Function
+',' Punctuation
+'\n ' Text
+'Property' Keyword.Type
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+',' Punctuation
+'\n ' Text
+'forAll' Name.Function
+',' Punctuation
+' ' Text
+'forAllElem' Name.Function
+',' Punctuation
+'\n ' Text
+'exists' Name.Function
+',' Punctuation
+' ' Text
+'existsDeeperBy' Name.Function
+',' Punctuation
+' ' Text
+'thereExists' Name.Function
+',' Punctuation
+' ' Text
+'thereExistsElem' Name.Function
+',' Punctuation
+'\n ' Text
+'(' Punctuation
+'==>' Operator
+')' Punctuation
+',' Punctuation
+'\n ' Text
+'Series' Keyword.Type
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+'(' Punctuation
+'..' Operator
+')' Punctuation
+',' Punctuation
+'\n ' Text
+'(' Punctuation
+'\\/' Operator
+')' Punctuation
+',' Punctuation
+' ' Text
+'(' Punctuation
+'><' Operator
+')' Punctuation
+',' Punctuation
+' ' Text
+'two' Name.Function
+',' Punctuation
+' ' Text
+'three' Name.Function
+',' Punctuation
+' ' Text
+'four' Name.Function
+',' Punctuation
+'\n ' Text
+'cons0' Name.Function
+',' Punctuation
+' ' Text
+'cons1' Name.Function
+',' Punctuation
+' ' Text
+'cons2' Name.Function
+',' Punctuation
+' ' Text
+'cons3' Name.Function
+',' Punctuation
+' ' Text
+'cons4' Name.Function
+',' Punctuation
+'\n ' Text
+'alts0' Name.Function
+',' Punctuation
+' ' Text
+'alts1' Name.Function
+',' Punctuation
+' ' Text
+'alts2' Name.Function
+',' Punctuation
+' ' Text
+'alts3' Name.Function
+',' Punctuation
+' ' Text
+'alts4' Name.Function
+',' Punctuation
+'\n ' Text
+'N' Keyword.Type
+'(' Punctuation
+'..' Operator
+')' Punctuation
+',' Punctuation
+' ' Text
+'Nat' Keyword.Type
+',' Punctuation
+' ' Text
+'Natural' Keyword.Type
+',' Punctuation
+'\n ' Text
+'depth' Name.Function
+',' Punctuation
+' ' Text
+'inc' Name.Function
+',' Punctuation
+' ' Text
+'dec' Name.Function
+'\n ' Text
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n\n' Text
+
+'import' Keyword.Reserved
+' ' Text
+'Data.List' Name.Namespace
+' ' Text
+'(' Punctuation
+'intersperse' Name.Function
+')' Punctuation
+'\n' Text
+
+'import' Keyword.Reserved
+' ' Text
+'Control.Monad' Name.Namespace
+' ' Text
+'(' Punctuation
+'when' Name.Function
+')' Punctuation
+'\n' Text
+
+'import' Keyword.Reserved
+' ' Text
+'System.IO' Name.Namespace
+' ' Text
+'(' Punctuation
+'stdout' Name.Function
+',' Punctuation
+' ' Text
+'hFlush' Name.Function
+')' Punctuation
+'\n\n' Text
+
+'------------------ <Series of depth-bounded values> -----------------' Comment.Single
+'\n\n' Text
+
+'-- Series arguments should be interpreted as a depth bound (>=0)' Comment.Single
+'\n' Text
+
+'-- Series results should have finite length' Comment.Single
+'\n\n' Text
+
+'type' Keyword.Reserved
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'a' Name
+']' Punctuation
+'\n\n' Text
+
+'-- sum' Comment.Single
+'\n' Text
+
+'infixr' Keyword.Reserved
+' ' Text
+'7' Literal.Number.Integer
+' ' Text
+'\\/' Operator
+'\n' Text
+
+'(' Punctuation
+'\\/' Operator
+')' Punctuation
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+'\n' Text
+
+'s1' Name.Function
+' ' Text
+'\\/' Operator
+' ' Text
+'s2' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'s1' Name
+' ' Text
+'d' Name
+' ' Text
+'++' Operator
+' ' Text
+'s2' Name
+' ' Text
+'d' Name
+'\n\n' Text
+
+'-- product' Comment.Single
+'\n' Text
+
+'infixr' Keyword.Reserved
+' ' Text
+'8' Literal.Number.Integer
+' ' Text
+'><' Operator
+'\n' Text
+
+'(' Punctuation
+'><' Operator
+')' Punctuation
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'b' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+')' Punctuation
+'\n' Text
+
+'s1' Name.Function
+' ' Text
+'><' Operator
+' ' Text
+'s2' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'s1' Name
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'y' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'s2' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'------------------- <methods for type enumeration> ------------------' Comment.Single
+'\n\n' Text
+
+'-- enumerated data values should be finite and fully defined' Comment.Single
+'\n' Text
+
+'-- enumerated functional values should be total and strict' Comment.Single
+'\n\n' Text
+
+'-- bounds:' Comment.Single
+'\n' Text
+
+'-- for data values, the depth of nested constructor applications' Comment.Single
+'\n' Text
+
+'-- for functional values, both the depth of nested case analysis' Comment.Single
+'\n' Text
+
+'-- and the depth of results' Comment.Single
+'\n \n' Text
+
+'class' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+'\n ' Text
+'coseries' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'()' Name.Builtin
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'()' Name.Builtin
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'()' Name.Builtin
+' ' Text
+'->' Operator.Word
+' ' Text
+'b' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'b' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'-' Operator
+'d' Name
+')' Punctuation
+'..' Operator
+'d' Name
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'i' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'i' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'(' Punctuation
+'i' Name
+' ' Text
+'-' Operator
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'i' Name
+' ' Text
+'<' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'g' Name
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'(' Punctuation
+'abs' Name
+' ' Text
+'i' Name
+' ' Text
+'-' Operator
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'z' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'z' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts0' Name
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'g' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Integer' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'toInteger' Name
+' ' Text
+'(' Punctuation
+'i' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Int' Keyword.Type
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'i' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'f' Name
+' ' Text
+'.' Operator
+' ' Text
+'(' Punctuation
+'fromInteger' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Integer' Keyword.Type
+'->' Operator.Word
+'Int' Keyword.Type
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'newtype' Keyword.Reserved
+' ' Text
+'N' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'N' Keyword.Type
+' ' Text
+'a' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'a' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'show' Name
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'i' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'show' Name
+' ' Text
+'i' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Integral' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'a' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'map' Name
+' ' Text
+'N' Keyword.Type
+' ' Text
+'[' Punctuation
+'0' Literal.Number.Integer
+'..' Operator
+"d'" Name
+']' Punctuation
+'\n ' Text
+'where' Keyword.Reserved
+'\n ' Text
+"d'" Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'fromInteger' Name
+' ' Text
+'(' Punctuation
+'toInteger' Name
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'i' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'i' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'(' Punctuation
+'i' Name
+' ' Text
+'-' Operator
+' ' Text
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'z' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'z' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts0' Name
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'type' Keyword.Reserved
+' ' Text
+'Nat' Keyword.Type
+' ' Text
+'=' Operator.Word
+' ' Text
+'N' Keyword.Type
+' ' Text
+'Int' Keyword.Type
+'\n' Text
+
+'type' Keyword.Reserved
+' ' Text
+'Natural' Keyword.Type
+' ' Text
+'=' Operator.Word
+' ' Text
+'N' Keyword.Type
+' ' Text
+'Integer' Keyword.Type
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Float' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'encodeFloat' Name
+' ' Text
+'sig' Name
+' ' Text
+'exp' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'sig' Name
+',' Punctuation
+'exp' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+',' Punctuation
+'\n ' Text
+'odd' Name
+' ' Text
+'sig' Name
+' ' Text
+'||' Operator
+' ' Text
+'sig' Name
+'==' Operator
+'0' Literal.Number.Integer
+' ' Text
+'&&' Operator
+' ' Text
+'exp' Name
+'==' Operator
+'0' Literal.Number.Integer
+' ' Text
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'f' Name
+' ' Text
+'.' Operator
+' ' Text
+'decodeFloat' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n \n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Double' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'frac' Name
+' ' Text
+'(' Punctuation
+'x' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Float' Keyword.Type
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'f' Name
+' ' Text
+'.' Operator
+' ' Text
+'(' Punctuation
+'frac' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Double' Keyword.Type
+'->' Operator.Word
+'Float' Keyword.Type
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'frac' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Real' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Fractional' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Real' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Fractional' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'b' Name
+'\n' Text
+
+'frac' Name.Function
+' ' Text
+'=' Operator.Word
+' ' Text
+'fromRational' Name
+' ' Text
+'.' Operator
+' ' Text
+'toRational' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Char' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'take' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'[' Punctuation
+"'a'" Literal.String.Char
+'..' Operator
+"'z'" Literal.String.Char
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'c' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'N' Keyword.Type
+' ' Text
+'(' Punctuation
+'fromEnum' Name
+' ' Text
+'c' Name
+' ' Text
+'-' Operator
+' ' Text
+'fromEnum' Name
+' ' Text
+"'a'" Literal.String.Char
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'><' Operator
+' ' Text
+'series' Name
+'\n ' Text
+'coseries' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'map' Name
+' ' Text
+'uncurry' Name
+' ' Text
+'.' Operator
+' ' Text
+'coseries' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'(' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+')' Punctuation
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'map' Name
+' ' Text
+'uncurry3' Name
+' ' Text
+'.' Operator
+' ' Text
+'coseries' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'d' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+',' Punctuation
+'d' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+',' Punctuation
+'d' Name
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'(' Punctuation
+'b' Name
+',' Punctuation
+'(' Punctuation
+'c' Name
+',' Punctuation
+'d' Name
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'map' Name
+' ' Text
+'uncurry4' Name
+' ' Text
+'.' Operator
+' ' Text
+'coseries' Name
+'\n\n' Text
+
+'uncurry3' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+')' Punctuation
+'->' Operator.Word
+'d' Name
+')' Punctuation
+'\n' Text
+
+'uncurry3' Name.Function
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'x' Name
+' ' Text
+'y' Name
+' ' Text
+'z' Name
+'\n\n' Text
+
+'uncurry4' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+'->' Operator.Word
+'e' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'(' Punctuation
+'a' Name
+',' Punctuation
+'b' Name
+',' Punctuation
+'c' Name
+',' Punctuation
+'d' Name
+')' Punctuation
+'->' Operator.Word
+'e' Name
+')' Punctuation
+'\n' Text
+
+'uncurry4' Name.Function
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'w' Name
+',' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'w' Name
+' ' Text
+'x' Name
+' ' Text
+'y' Name
+' ' Text
+'z' Name
+'\n\n' Text
+
+'two' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+')' Punctuation
+'\n' Text
+
+'two' Name.Function
+' ' Text
+'s' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+'\n\n' Text
+
+'three' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+')' Punctuation
+'\n' Text
+
+'three' Name.Function
+' ' Text
+'s' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'x' Name
+',' Punctuation
+'(' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'(' Punctuation
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+')' Punctuation
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'four' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+',' Punctuation
+'a' Name
+')' Punctuation
+'\n' Text
+
+'four' Name.Function
+' ' Text
+'s' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'(' Punctuation
+'w' Name
+',' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'w' Name
+',' Punctuation
+'(' Punctuation
+'x' Name
+',' Punctuation
+'(' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+')' Punctuation
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'(' Punctuation
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+' ' Text
+'><' Operator
+' ' Text
+'s' Name
+')' Punctuation
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'cons0' Name.Function
+' ' Text
+'::' Operator.Word
+' \n ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+'\n' Text
+
+'cons0' Name.Function
+' ' Text
+'c' Name
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'c' Name
+']' Punctuation
+'\n\n' Text
+
+'cons1' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'b' Name
+'\n' Text
+
+'cons1' Name.Function
+' ' Text
+'c' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'c' Name
+' ' Text
+'z' Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'z' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'-' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+']' Punctuation
+'\n\n' Text
+
+'cons2' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'c' Name
+'\n' Text
+
+'cons2' Name.Function
+' ' Text
+'c' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'c' Name
+' ' Text
+'y' Name
+' ' Text
+'z' Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'(' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'-' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+']' Punctuation
+'\n\n' Text
+
+'cons3' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'d' Name
+'\n' Text
+
+'cons3' Name.Function
+' ' Text
+'c' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'c' Name
+' ' Text
+'x' Name
+' ' Text
+'y' Name
+' ' Text
+'z' Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'-' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+']' Punctuation
+'\n\n' Text
+
+'cons4' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'d' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+'->' Operator.Word
+'e' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'e' Name
+'\n' Text
+
+'cons4' Name.Function
+' ' Text
+'c' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+'c' Name
+' ' Text
+'w' Name
+' ' Text
+'x' Name
+' ' Text
+'y' Name
+' ' Text
+'z' Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+',' Punctuation
+' ' Text
+'(' Punctuation
+'w' Name
+',' Punctuation
+'x' Name
+',' Punctuation
+'y' Name
+',' Punctuation
+'z' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'-' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+']' Punctuation
+'\n\n' Text
+
+'alts0' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+'\n' Text
+
+'alts0' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+'\n\n' Text
+
+'alts1' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+'\n' Text
+
+'alts1' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'dec' Name
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'[' Punctuation
+'\\' Name.Function
+'_' Keyword.Reserved
+' ' Text
+'->' Operator.Word
+' ' Text
+'x' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'alts2' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+')' Punctuation
+'\n' Text
+
+'alts2' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'dec' Name
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'[' Punctuation
+'\\' Name.Function
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'->' Operator.Word
+' ' Text
+'x' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'alts3' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'d' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+')' Punctuation
+'\n' Text
+
+'alts3' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'dec' Name
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'[' Punctuation
+'\\' Name.Function
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'->' Operator.Word
+' ' Text
+'x' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'alts4' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'c' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'e' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'Series' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+'->' Operator.Word
+'c' Name
+'->' Operator.Word
+'d' Name
+'->' Operator.Word
+'e' Name
+')' Punctuation
+'\n' Text
+
+'alts4' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'series' Name
+' ' Text
+'(' Punctuation
+'dec' Name
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'[' Punctuation
+'\\' Name.Function
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'->' Operator.Word
+' ' Text
+'x' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'cons0' Name
+' ' Text
+'True' Keyword.Type
+' ' Text
+'\\/' Operator
+' ' Text
+'cons0' Name
+' ' Text
+'False' Keyword.Type
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'x' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'x' Name
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'b1' Name
+' ' Text
+'else' Keyword.Reserved
+' ' Text
+'b2' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'b1' Name
+',' Punctuation
+'b2' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'Maybe' Keyword.Type
+' ' Text
+'a' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'cons0' Name
+' ' Text
+'Nothing' Keyword.Type
+' ' Text
+'\\/' Operator
+' ' Text
+'cons1' Name
+' ' Text
+'Just' Keyword.Type
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'m' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'case' Keyword.Reserved
+' ' Text
+'m' Name
+' ' Text
+'of' Keyword.Reserved
+'\n ' Text
+'Nothing' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'z' Name
+'\n ' Text
+'Just' Keyword.Type
+' ' Text
+'x' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'x' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'z' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts0' Name
+' ' Text
+'d' Name
+' ' Text
+',' Punctuation
+'\n ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'Either' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'cons1' Name
+' ' Text
+'Left' Keyword.Type
+' ' Text
+'\\/' Operator
+' ' Text
+'cons1' Name
+' ' Text
+'Right' Keyword.Type
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'e' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'case' Keyword.Reserved
+' ' Text
+'e' Name
+' ' Text
+'of' Keyword.Reserved
+'\n ' Text
+'Left' Keyword.Type
+' ' Text
+'x' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'x' Name
+'\n ' Text
+'Right' Keyword.Type
+' ' Text
+'y' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'g' Name
+' ' Text
+'y' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+' ' Text
+',' Punctuation
+'\n ' Text
+'g' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts1' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'[' Punctuation
+'a' Name
+']' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'cons0' Name
+' ' Text
+'[]' Keyword.Type
+' ' Text
+'\\/' Operator
+' ' Text
+'cons2' Name
+' ' Text
+'(' Punctuation
+':' Keyword.Type
+')' Punctuation
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'xs' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'case' Keyword.Reserved
+' ' Text
+'xs' Name
+' ' Text
+'of' Keyword.Reserved
+'\n ' Text
+'[]' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'y' Name
+'\n ' Text
+'(' Punctuation
+'x' Name
+':' Keyword.Type
+"xs'" Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'x' Name
+' ' Text
+"xs'" Name
+'\n ' Text
+'|' Operator
+' ' Text
+'y' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts0' Name
+' ' Text
+'d' Name
+' ' Text
+',' Punctuation
+'\n ' Text
+'f' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'alts2' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'-- Warning: the coseries instance here may generate duplicates.' Comment.Single
+'\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Serial' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'series' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'coseries' Name
+'\n ' Text
+'coseries' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[' Punctuation
+' ' Text
+'\\' Name.Function
+'f' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'g' Name
+' ' Text
+'[' Punctuation
+'f' Name
+' ' Text
+'x' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+']' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'g' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+' \n\n' Text
+
+'-- For customising the depth measure. Use with care!' Comment.Single
+'\n\n' Text
+
+'depth' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+'\n' Text
+
+'depth' Name.Function
+' ' Text
+'d' Name
+' ' Text
+"d'" Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>=' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'=' Operator.Word
+' ' Text
+"d'" Name
+'+' Operator
+'1' Literal.Number.Integer
+'-' Operator
+'d' Name
+'\n ' Text
+'|' Operator
+' ' Text
+'otherwise' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'error' Name.Exception
+' ' Text
+'"' Literal.String
+'SmallCheck.depth: argument < 0' Literal.String
+'"' Literal.String
+'\n\n' Text
+
+'dec' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+'\n' Text
+
+'dec' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'|' Operator
+' ' Text
+'d' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'=' Operator.Word
+' ' Text
+'d' Name
+'-' Operator
+'1' Literal.Number.Integer
+'\n ' Text
+'|' Operator
+' ' Text
+'otherwise' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'error' Name.Exception
+' ' Text
+'"' Literal.String
+'SmallCheck.dec: argument <= 0' Literal.String
+'"' Literal.String
+'\n\n' Text
+
+'inc' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+'\n' Text
+
+'inc' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'d' Name
+'+' Operator
+'1' Literal.Number.Integer
+'\n\n' Text
+
+'-- show the extension of a function (in part, bounded both by' Comment.Single
+'\n' Text
+
+'-- the number and depth of arguments)' Comment.Single
+'\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'show' Name
+' ' Text
+'f' Name
+' ' Text
+'=' Operator.Word
+' \n ' Text
+'if' Keyword.Reserved
+' ' Text
+'maxarheight' Name
+' ' Text
+'==' Operator
+' ' Text
+'1' Literal.Number.Integer
+'\n ' Text
+'&&' Operator
+' ' Text
+'sumarwidth' Name
+' ' Text
+'+' Operator
+' ' Text
+'length' Name
+' ' Text
+'ars' Name
+' ' Text
+'*' Operator
+' ' Text
+'length' Name
+' ' Text
+'"' Literal.String
+'->;' Literal.String
+'"' Literal.String
+' ' Text
+'<' Operator
+' ' Text
+'widthLimit' Name
+' ' Text
+'then' Keyword.Reserved
+'\n ' Text
+'"' Literal.String
+'{' Literal.String
+'"' Literal.String
+'++' Operator
+'(' Punctuation
+'\n ' Text
+'concat' Name
+' ' Text
+'$' Operator
+' ' Text
+'intersperse' Name
+' ' Text
+'"' Literal.String
+';' Literal.String
+'"' Literal.String
+' ' Text
+'$' Operator
+' ' Text
+'[' Punctuation
+'a' Name
+'++' Operator
+'"' Literal.String
+'->' Literal.String
+'"' Literal.String
+'++' Operator
+'r' Name
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'r' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'ars' Name
+']' Punctuation
+'\n ' Text
+')' Punctuation
+'++' Operator
+'"' Literal.String
+'}' Literal.String
+'"' Literal.String
+'\n ' Text
+'else' Keyword.Reserved
+'\n ' Text
+'concat' Name
+' ' Text
+'$' Operator
+' ' Text
+'[' Punctuation
+'a' Name
+'++' Operator
+'"' Literal.String
+'->' Literal.String
+'\\' Literal.String.Escape
+'n' Literal.String.Escape
+'"' Literal.String
+'++' Operator
+'indent' Name
+' ' Text
+'r' Name
+' ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'r' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'ars' Name
+']' Punctuation
+'\n ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'ars' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'take' Name
+' ' Text
+'lengthLimit' Name
+' ' Text
+'[' Punctuation
+' ' Text
+'(' Punctuation
+'show' Name
+' ' Text
+'x' Name
+',' Punctuation
+' ' Text
+'show' Name
+' ' Text
+'(' Punctuation
+'f' Name
+' ' Text
+'x' Name
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'series' Name
+' ' Text
+'depthLimit' Name
+' ' Text
+']' Punctuation
+'\n ' Text
+'maxarheight' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'maximum' Name
+' ' Text
+'[' Punctuation
+' ' Text
+'max' Name
+' ' Text
+'(' Punctuation
+'height' Name
+' ' Text
+'a' Name
+')' Punctuation
+' ' Text
+'(' Punctuation
+'height' Name
+' ' Text
+'r' Name
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'r' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'ars' Name
+' ' Text
+']' Punctuation
+'\n ' Text
+'sumarwidth' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'sum' Name
+' ' Text
+'[' Punctuation
+' ' Text
+'length' Name
+' ' Text
+'a' Name
+' ' Text
+'+' Operator
+' ' Text
+'length' Name
+' ' Text
+'r' Name
+' \n ' Text
+'|' Operator
+' ' Text
+'(' Punctuation
+'a' Name
+',' Punctuation
+'r' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'ars' Name
+']' Punctuation
+'\n ' Text
+'indent' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'unlines' Name
+' ' Text
+'.' Operator
+' ' Text
+'map' Name
+' ' Text
+'(' Punctuation
+'"' Literal.String
+' ' Literal.String
+'"' Literal.String
+'++' Operator
+')' Punctuation
+' ' Text
+'.' Operator
+' ' Text
+'lines' Name
+'\n ' Text
+'height' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'length' Name
+' ' Text
+'.' Operator
+' ' Text
+'lines' Name
+'\n ' Text
+'(' Punctuation
+'widthLimit' Name
+',' Punctuation
+'lengthLimit' Name
+',' Punctuation
+'depthLimit' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'(' Punctuation
+'80' Literal.Number.Integer
+',' Punctuation
+'20' Literal.Number.Integer
+',' Punctuation
+'3' Literal.Number.Integer
+')' Punctuation
+'::' Operator.Word
+'(' Punctuation
+'Int' Keyword.Type
+',' Punctuation
+'Int' Keyword.Type
+',' Punctuation
+'Int' Keyword.Type
+')' Punctuation
+'\n\n' Text
+
+'---------------- <properties and their evaluation> ------------------' Comment.Single
+'\n\n' Text
+
+'-- adapted from QuickCheck originals: here results come in lists,' Comment.Single
+'\n' Text
+
+'-- properties have depth arguments, stamps (for classifying random' Comment.Single
+'\n' Text
+
+'-- tests) are omitted, existentials are introduced' Comment.Single
+'\n\n' Text
+
+'newtype' Keyword.Reserved
+' ' Text
+'PR' Keyword.Type
+' ' Text
+'=' Operator.Word
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'[' Punctuation
+'Result' Keyword.Type
+']' Punctuation
+'\n\n' Text
+
+'data' Keyword.Reserved
+' ' Text
+'Result' Keyword.Type
+' ' Text
+'=' Operator.Word
+' ' Text
+'Result' Keyword.Type
+' ' Text
+'{' Punctuation
+'ok' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Maybe' Keyword.Type
+' ' Text
+'Bool' Keyword.Type
+',' Punctuation
+' ' Text
+'arguments' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'[' Punctuation
+'String' Keyword.Type
+']' Punctuation
+'}' Punctuation
+'\n\n' Text
+
+'nothing' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Result' Keyword.Type
+'\n' Text
+
+'nothing' Name.Function
+' ' Text
+'=' Operator.Word
+' ' Text
+'Result' Keyword.Type
+' ' Text
+'{' Punctuation
+'ok' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Nothing' Keyword.Type
+',' Punctuation
+' ' Text
+'arguments' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'[]' Keyword.Type
+'}' Punctuation
+'\n\n' Text
+
+'result' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Result' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'PR' Keyword.Type
+'\n' Text
+
+'result' Name.Function
+' ' Text
+'res' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'[' Punctuation
+'res' Name
+']' Punctuation
+'\n\n' Text
+
+'newtype' Keyword.Reserved
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'=' Operator.Word
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'(' Punctuation
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'PR' Keyword.Type
+')' Punctuation
+'\n\n' Text
+
+'class' Keyword.Reserved
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'property' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'PR' Keyword.Type
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'property' Name
+' ' Text
+'b' Name
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'=' Operator.Word
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'[' Punctuation
+'Result' Keyword.Type
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'[]' Keyword.Type
+']' Punctuation
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'PR' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'property' Name
+' ' Text
+'prop' Name
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'=' Operator.Word
+' ' Text
+'prop' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Show' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'property' Name
+' ' Text
+'f' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+"f'" Name
+' ' Text
+'where' Keyword.Reserved
+' ' Text
+'Property' Keyword.Type
+' ' Text
+"f'" Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'forAll' Name
+' ' Text
+'series' Name
+' ' Text
+'f' Name
+'\n\n' Text
+
+'instance' Keyword.Reserved
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'property' Name
+' ' Text
+'(' Punctuation
+'Property' Keyword.Type
+' ' Text
+'f' Name
+')' Punctuation
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'f' Name
+' ' Text
+'d' Name
+'\n\n' Text
+
+'evaluate' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'Result' Keyword.Type
+'\n' Text
+
+'evaluate' Name.Function
+' ' Text
+'x' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'rs' Name
+' ' Text
+'where' Keyword.Reserved
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'rs' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'property' Name
+' ' Text
+'x' Name
+' ' Text
+'d' Name
+'\n\n' Text
+
+'forAll' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Show' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'forAll' Name.Function
+' ' Text
+'xs' Name
+' ' Text
+'f' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'$' Operator
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'$' Operator
+'\n ' Text
+'[' Punctuation
+' ' Text
+'r' Name
+'{' Punctuation
+'arguments' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'show' Name
+' ' Text
+'x' Name
+' ' Text
+':' Keyword.Type
+' ' Text
+'arguments' Name
+' ' Text
+'r' Name
+'}' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'xs' Name
+' ' Text
+'d' Name
+',' Punctuation
+' ' Text
+'r' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'evaluate' Name
+' ' Text
+'(' Punctuation
+'f' Name
+' ' Text
+'x' Name
+')' Punctuation
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+'\n\n' Text
+
+'forAllElem' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Show' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+' ' Text
+'[' Punctuation
+'a' Name
+']' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'forAllElem' Name.Function
+' ' Text
+'xs' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'forAll' Name
+' ' Text
+'(' Punctuation
+'const' Name
+' ' Text
+'xs' Name
+')' Punctuation
+'\n\n' Text
+
+'thereExists' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Series' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'thereExists' Name.Function
+' ' Text
+'xs' Name
+' ' Text
+'f' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'$' Operator
+' ' Text
+'\\' Name.Function
+'d' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'$' Operator
+'\n ' Text
+'[' Punctuation
+' ' Text
+'Result' Keyword.Type
+'\n ' Text
+'(' Punctuation
+' ' Text
+'Just' Keyword.Type
+' ' Text
+'$' Operator
+' ' Text
+'or' Name
+' ' Text
+'[' Punctuation
+' ' Text
+'all' Name
+' ' Text
+'pass' Name
+' ' Text
+'(' Punctuation
+'evaluate' Name
+' ' Text
+'(' Punctuation
+'f' Name
+' ' Text
+'x' Name
+')' Punctuation
+' ' Text
+'d' Name
+')' Punctuation
+'\n ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'<-' Operator.Word
+' ' Text
+'xs' Name
+' ' Text
+'d' Name
+' ' Text
+']' Punctuation
+' ' Text
+')' Punctuation
+'\n ' Text
+'[]' Keyword.Type
+' ' Text
+']' Punctuation
+' \n ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'pass' Name
+' ' Text
+'(' Punctuation
+'Result' Keyword.Type
+' ' Text
+'Nothing' Keyword.Type
+' ' Text
+'_' Keyword.Reserved
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'True' Keyword.Type
+'\n ' Text
+'pass' Name
+' ' Text
+'(' Punctuation
+'Result' Keyword.Type
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'_' Keyword.Reserved
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'b' Name
+'\n\n' Text
+
+'thereExistsElem' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'[' Punctuation
+'a' Name
+']' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'thereExistsElem' Name.Function
+' ' Text
+'xs' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'thereExists' Name
+' ' Text
+'(' Punctuation
+'const' Name
+' ' Text
+'xs' Name
+')' Punctuation
+'\n\n' Text
+
+'exists' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'exists' Name.Function
+' ' Text
+'=' Operator.Word
+' ' Text
+'thereExists' Name
+' ' Text
+'series' Name
+'\n\n' Text
+
+'existsDeeperBy' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'(' Punctuation
+'Serial' Keyword.Type
+' ' Text
+'a' Name
+',' Punctuation
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'b' Name
+')' Punctuation
+' ' Text
+'=>' Operator.Word
+'\n ' Text
+'(' Punctuation
+'Int' Keyword.Type
+'->' Operator.Word
+'Int' Keyword.Type
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'(' Punctuation
+'a' Name
+'->' Operator.Word
+'b' Name
+')' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'existsDeeperBy' Name.Function
+' ' Text
+'f' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'thereExists' Name
+' ' Text
+'(' Punctuation
+'series' Name
+' ' Text
+'.' Operator
+' ' Text
+'f' Name
+')' Punctuation
+'\n \n' Text
+
+'infixr' Keyword.Reserved
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'==>' Operator
+'\n\n' Text
+
+'(' Punctuation
+'==>' Operator
+')' Punctuation
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'Property' Keyword.Type
+'\n' Text
+
+'True' Keyword.Type
+' ' Text
+'==>' Operator
+' ' Text
+'x' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'(' Punctuation
+'property' Name
+' ' Text
+'x' Name
+')' Punctuation
+'\n' Text
+
+'False' Keyword.Type
+' ' Text
+'==>' Operator
+' ' Text
+'x' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'Property' Keyword.Type
+' ' Text
+'(' Punctuation
+'const' Name
+' ' Text
+'(' Punctuation
+'result' Name
+' ' Text
+'nothing' Name
+')' Punctuation
+')' Punctuation
+'\n\n' Text
+
+'--------------------- <top-level test drivers> ----------------------' Comment.Single
+'\n\n' Text
+
+'-- similar in spirit to QuickCheck but with iterative deepening' Comment.Single
+'\n\n' Text
+
+'-- test for values of depths 0..d stopping when a property' Comment.Single
+'\n' Text
+
+'-- fails or when it has been checked for all these values' Comment.Single
+'\n' Text
+
+'smallCheck' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'String' Keyword.Type
+'\n' Text
+
+'smallCheck' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'iterCheck' Name
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'d' Name
+')' Punctuation
+'\n\n' Text
+
+'depthCheck' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'String' Keyword.Type
+'\n' Text
+
+'depthCheck' Name.Function
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'iterCheck' Name
+' ' Text
+'d' Name
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'d' Name
+')' Punctuation
+'\n\n' Text
+
+'iterCheck' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Testable' Keyword.Type
+' ' Text
+'a' Name
+' ' Text
+'=>' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Maybe' Keyword.Type
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'a' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'String' Keyword.Type
+'\n' Text
+
+'iterCheck' Name.Function
+' ' Text
+'dFrom' Name
+' ' Text
+'mdTo' Name
+' ' Text
+'t' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'iter' Name
+' ' Text
+'dFrom' Name
+'\n ' Text
+'where' Keyword.Reserved
+'\n ' Text
+'iter' Name
+' ' Text
+'::' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'String' Keyword.Type
+'\n ' Text
+'iter' Name
+' ' Text
+'d' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'do' Keyword.Reserved
+'\n ' Text
+'let' Keyword.Reserved
+' ' Text
+'Prop' Keyword.Type
+' ' Text
+'results' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'property' Name
+' ' Text
+'t' Name
+' ' Text
+'d' Name
+'\n ' Text
+'(' Punctuation
+'ok' Name
+',' Punctuation
+'s' Name
+')' Punctuation
+' ' Text
+'<-' Operator.Word
+' ' Text
+'check' Name
+' ' Text
+'(' Punctuation
+'mdTo' Name
+'==' Operator
+'Nothing' Keyword.Type
+')' Punctuation
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'True' Keyword.Type
+' ' Text
+'results' Name
+'\n ' Text
+'maybe' Name
+' ' Text
+'(' Punctuation
+'iter' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+')' Punctuation
+'\n ' Text
+'(' Punctuation
+'\\' Name.Function
+'dTo' Name
+' ' Text
+'->' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'ok' Name
+' ' Text
+'&&' Operator
+' ' Text
+'d' Name
+' ' Text
+'<' Operator
+' ' Text
+'dTo' Name
+'\n ' Text
+'then' Keyword.Reserved
+' ' Text
+'iter' Name
+' ' Text
+'(' Punctuation
+'d' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+'\n ' Text
+'else' Keyword.Reserved
+' ' Text
+'return' Name
+' ' Text
+'s' Name
+')' Punctuation
+'\n ' Text
+'mdTo' Name
+'\n\n' Text
+
+'check' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'[' Punctuation
+'Result' Keyword.Type
+']' Punctuation
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'(' Punctuation
+'Bool' Keyword.Type
+',' Punctuation
+' ' Text
+'String' Keyword.Type
+')' Punctuation
+'\n' Text
+
+'check' Name.Function
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+' ' Text
+'ok' Name
+' ' Text
+'rs' Name
+' ' Text
+'|' Operator
+' ' Text
+'null' Name
+' ' Text
+'rs' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'do' Keyword.Reserved
+'\n ' Text
+'let' Keyword.Reserved
+' ' Text
+'s' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'"' Literal.String
+' Completed ' Literal.String
+'"' Literal.String
+'++' Operator
+'show' Name
+' ' Text
+'n' Name
+'++' Operator
+'"' Literal.String
+' test(s)' Literal.String
+'"' Literal.String
+'\n ' Text
+'y' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'if' Keyword.Reserved
+' ' Text
+'i' Name
+' ' Text
+'then' Keyword.Reserved
+' ' Text
+'"' Literal.String
+'.' Literal.String
+'"' Literal.String
+' ' Text
+'else' Keyword.Reserved
+' ' Text
+'"' Literal.String
+' without failure.' Literal.String
+'"' Literal.String
+'\n ' Text
+'z' Name
+' ' Text
+'|' Operator
+' ' Text
+'x' Name
+' ' Text
+'>' Operator
+' ' Text
+'0' Literal.Number.Integer
+' ' Text
+'=' Operator.Word
+' ' Text
+'"' Literal.String
+' But ' Literal.String
+'"' Literal.String
+'++' Operator
+'show' Name
+' ' Text
+'x' Name
+'++' Operator
+'"' Literal.String
+' did not meet ==> condition.' Literal.String
+'"' Literal.String
+'\n ' Text
+'|' Operator
+' ' Text
+'otherwise' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'"' Literal.String
+'"' Literal.String
+'\n ' Text
+'return' Name
+' ' Text
+'(' Punctuation
+'ok' Name
+',' Punctuation
+' ' Text
+'s' Name
+' ' Text
+'++' Operator
+' ' Text
+'y' Name
+' ' Text
+'++' Operator
+' ' Text
+'z' Name
+')' Punctuation
+'\n\n' Text
+
+'check' Name.Function
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+' ' Text
+'ok' Name
+' ' Text
+'(' Punctuation
+'Result' Keyword.Type
+' ' Text
+'Nothing' Keyword.Type
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+':' Keyword.Type
+' ' Text
+'rs' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'do' Keyword.Reserved
+'\n ' Text
+'progressReport' Name
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+'\n ' Text
+'check' Name
+' ' Text
+'i' Name
+' ' Text
+'(' Punctuation
+'n' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'(' Punctuation
+'x' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'ok' Name
+' ' Text
+'rs' Name
+'\n\n' Text
+
+'check' Name.Function
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'Result' Keyword.Type
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'True' Keyword.Type
+')' Punctuation
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+':' Keyword.Type
+' ' Text
+'rs' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'do' Keyword.Reserved
+'\n ' Text
+'progressReport' Name
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+'\n ' Text
+'check' Name
+' ' Text
+'i' Name
+' ' Text
+'(' Punctuation
+'n' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'x' Name
+' ' Text
+'f' Name
+' ' Text
+'rs' Name
+'\n\n' Text
+
+'check' Name.Function
+' ' Text
+'i' Name
+' ' Text
+'n' Name
+' ' Text
+'x' Name
+' ' Text
+'f' Name
+' ' Text
+'(' Punctuation
+'Result' Keyword.Type
+' ' Text
+'(' Punctuation
+'Just' Keyword.Type
+' ' Text
+'False' Keyword.Type
+')' Punctuation
+' ' Text
+'args' Name
+' ' Text
+':' Keyword.Type
+' ' Text
+'rs' Name
+')' Punctuation
+' ' Text
+'=' Operator.Word
+' ' Text
+'do' Keyword.Reserved
+'\n ' Text
+'let' Keyword.Reserved
+' ' Text
+'s' Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'"' Literal.String
+' Failed test no. ' Literal.String
+'"' Literal.String
+'++' Operator
+'show' Name
+' ' Text
+'(' Punctuation
+'n' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+'++' Operator
+'"' Literal.String
+'. Test values follow.' Literal.String
+'"' Literal.String
+'\n ' Text
+"s'" Name
+' ' Text
+'=' Operator.Word
+' ' Text
+'s' Name
+' ' Text
+'++' Operator
+' ' Text
+'"' Literal.String
+': ' Literal.String
+'"' Literal.String
+' ' Text
+'++' Operator
+' ' Text
+'concat' Name
+' ' Text
+'(' Punctuation
+'intersperse' Name
+' ' Text
+'"' Literal.String
+', ' Literal.String
+'"' Literal.String
+' ' Text
+'args' Name
+')' Punctuation
+'\n ' Text
+'if' Keyword.Reserved
+' ' Text
+'i' Name
+' ' Text
+'then' Keyword.Reserved
+'\n ' Text
+'check' Name
+' ' Text
+'i' Name
+' ' Text
+'(' Punctuation
+'n' Name
+'+' Operator
+'1' Literal.Number.Integer
+')' Punctuation
+' ' Text
+'x' Name
+' ' Text
+'False' Keyword.Type
+' ' Text
+'rs' Name
+'\n ' Text
+'else' Keyword.Reserved
+'\n ' Text
+'return' Name
+' ' Text
+'(' Punctuation
+'False' Keyword.Type
+',' Punctuation
+' ' Text
+"s'" Name
+')' Punctuation
+'\n\n' Text
+
+'progressReport' Name.Function
+' ' Text
+'::' Operator.Word
+' ' Text
+'Bool' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'Int' Keyword.Type
+' ' Text
+'->' Operator.Word
+' ' Text
+'IO' Keyword.Type
+' ' Text
+'()' Name.Builtin
+'\n' Text
+
+'progressReport' Name.Function
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'_' Keyword.Reserved
+' ' Text
+'=' Operator.Word
+' ' Text
+'return' Name
+' ' Text
+'()' Name.Builtin
+'\n' Text