diff options
| author | Georg Brandl <georg@python.org> | 2021-01-18 21:24:00 +0100 |
|---|---|---|
| committer | Georg Brandl <georg@python.org> | 2021-01-18 22:08:36 +0100 |
| commit | 2a3d3a7d5b9c60dedf6638d876161d9563faebcf (patch) | |
| tree | 809c0b4a686db98f5954afa1944404cd9652c6b2 /tests/lexers/haskell/example3.txt | |
| parent | f0445be718da83541ea3401aad882f3937147263 (diff) | |
| download | pygments-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.txt | 5019 |
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 |
