>> main
Running tests for deepseq-bounded...
Cases: 1  Tried: 0  Errors: 0  Failures: 0

Testing.

Note that  __ = undefined  (abbrev. occurring in what follows).

Testing showPat
---------------
input:                       Node WW []
expect: *
   got: *
input:                       Node WI []
expect: .
   got: .
input:                       Node WS []
expect: !
   got: !
input:                       Node WR []
expect: ()
   got: ()
input:                       Node WR [Node WW []]
expect: (*)
   got: (*)
input:                       Node WR [Node WW [],Node WW []]
expect: (**)
   got: (**)
input:                       Node WR [Node WS [],Node WW []]
expect: (!*)
   got: (!*)
input:                       Node WR [Node WI [],Node WS []]
expect: (.!)
   got: (.!)
input:                       Node WR [Node WI []]
expect: (.)
   got: (.)
input:                       Node WR [Node WR [Node WI []]]
expect: ((.))
   got: ((.))
input:                       Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI []],Node WW [],Node WW [],Node WI [],Node WW []],Node WI [],Node WW []]
expect: (*.(*.(*.)**.*).*)
   got: (*.(*.(*.)**.*).*)
input:                       Node WR [Node WI [],Node WS [],Node WR [Node WN 23 [],Node WW []]]
expect: (.!(*23*))
   got: (.!(*23*))
input:                       Node WR [Node WI [],Node =WR [Node =WN 23 [],Node WW []],Node WW []]
expect: (.=(=*23*)*)
   got: (.=(=*23*)*)
input:                       Node TR (Int) []
expect: :Int:()
   got: :Int:()
input:                       Node TN 23 (Int) []
expect: :Int:*23
   got: :Int:*23
input:                       Node TW (Int) []
expect: :Int:*
   got: :Int:*
input:                       Node TI (Int) []
expect: :Int:.
   got: :Int:.
input:                       Node =TR (Int) []
expect: =:Int:()
   got: =:Int:()
input:                       Node =TN 23 (Int) []
expect: =:Int:*23
   got: =:Int:*23
input:                       Node =TW (Int) []
expect: =:Int:*
   got: =:Int:*
input:                       Node =TI (Int) []
expect: =:Int:.
   got: =:Int:.
input:                       Node =TR ([Int]) []
expect: =:[Int]:()
   got: =:[Int]:()
input:                       Node =TW ([Int]) []
expect: =:[Int]:*
   got: =:[Int]:*
input:                       Node =TN 23 ([Int]) []
expect: =:[Int]:*23
   got: =:[Int]:*23
input:                       Node =+^WR []
expect: =+^()
   got: =+^()
input:                       Node =+^TN 23 ([Int]) []
expect: =+^:[Int]:*23
   got: =+^:[Int]:*23

Pattern                       Compiles to
-----------------------------------------
.                             Node WI []
!                             Node WS []
*                             Node WW []
*!                            Node WR [Node WW [],Node WS []]
()                            Node WR []
(.)                           Node WR [Node WI []]
(*)                           Node WR [Node WW []]
(**)                          Node WR [Node WW [],Node WW []]
(!*)                          Node WR [Node WS [],Node WW []]
(.!)                          Node WR [Node WI [],Node WS []]
(.(.))                        Node WR [Node WI [],Node WR [Node WI []]]
((.))                         Node WR [Node WR [Node WI []]]
(.(().))                      Node WR [Node WI [],Node WR [Node WR [],Node WI []]]
(*.*.*.**.*.*)                Node WR [Node WW [],Node WI [],Node WW [],Node WI [],Node WW [],Node WI [],Node WW [],Node WW [],Node WI [],Node WW [],Node WI [],Node WW []]
(*.(*.(*.)*)*(.*).*)          Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI []],Node WW []],Node WW [],Node WR [Node WI [],Node WW []],Node WI [],Node WW []]
(*.(*.(*.)*)*.*)              Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI []],Node WW []],Node WW [],Node WI [],Node WW []]
(*.(*.(*.)*)(*)(.*).*)        Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI [],Node WR [Node WW [],Node WI []],Node WW []],Node WR [Node WW []],Node WR [Node WI [],Node WW []],Node WI [],Node WW []]
((!(!)(((!).!(!))))!(!(!)))   Node WR [Node WR [Node WS [],Node WR [Node WS []],Node WR [Node WR [Node WR [Node WS []],Node WI [],Node WS [],Node WR [Node WS []]]]],Node WS [],Node WR [Node WS [],Node WR [Node WS []]]]
*23                           Node WN 23 []
(.!(*23*))                    Node WR [Node WI [],Node WS [],Node WR [Node WN 23 [],Node WW []]]
:Int:                         compilePat: input not completely consumed
Input remaining: :Int:
Patterns so far parsed: []
:Int:()                       Node TR (Int) []
:Int:!                        compilePat: input not completely consumed
Input remaining: :Int:!
Patterns so far parsed: []
:Int.                         compilePat: input not completely consumed
Input remaining: :Int.
Patterns so far parsed: []
:Int:.                        Node TI (Int) []
:Int:*                        Node TW (Int) []
:Int*23                       compilePat: input not completely consumed
Input remaining: :Int*23
Patterns so far parsed: []
:Int:*23                      Node TN 23 (Int) []
=.                            Node =WI []
=!                            Node =WS []
=*                            Node =WW []
(.=(=*23*)*)                  Node WR [Node WI [],Node =WR [Node =WN 23 [],Node WW []],Node WW []]
=:Int                         compilePat: input not completely consumed
Input remaining: =:Int
Patterns so far parsed: []
=:Int:()                      Node =TR (Int) []
=:Int:!                       compilePat: input not completely consumed
Input remaining: =:Int:!
Patterns so far parsed: []
=:Int:.                       Node =TI (Int) []
=:Int:*                       Node =TW (Int) []
=:Int*23                      compilePat: input not completely consumed
Input remaining: =:Int*23
Patterns so far parsed: []
=:Int:*23                     Node =TN 23 (Int) []
=:[Int]:()                    Node =TR ([Int]) []
=:[Int]:*                     Node =TW ([Int]) []
=:[Int]:*23                   Node =TN 23 ([Int]) []
=+^()                         Node =+^WR []
+^=()                         Node =+^WR []
=+^:[Int]:*23                 Node =+^TN 23 ([Int]) []

===================================================
exp = (3.4, [5,__,7], __) :: (Float, [Int], Bool)
get (_,xs,_) = show $ (xs!!2)
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = !..
showPat.compilePat       = (!..)
expected value           = syntax error
actual value             = 7
---------------------------------------------------
patstr                   = (!..)
showPat.compilePat       = (!..)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (().().())
expected value           = 7 (but "# with subpattern" warning)
showPat.compilePat       = (().().())
actual value             = 7
---------------------------------------------------
patstr                   = *
showPat.compilePat       = *
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (***)
showPat.compilePat       = (***)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (...)
showPat.compilePat       = (...)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*..)
showPat.compilePat       = (*..)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (**.)
showPat.compilePat       = (**.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (..*)
showPat.compilePat       = (..*)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ((*.*).)
expected value           = 7 (with silent pattern-match failure)
showPat.compilePat       = ((*.*).)
actual value             = 7
---------------------------------------------------
patstr                   = ((*...).)
expected value           = 7 (with silent pattern-match failure)
showPat.compilePat       = ((*...).)
actual value             = 7
---------------------------------------------------
patstr                   = ((*....).)
expected value           = 7 (with silent pattern-match failure)
showPat.compilePat       = ((*....).)
actual value             = 7
---------------------------------------------------
patstr                   = ((*....)!)
expected value           = 7 (with silent pattern-match failure)
showPat.compilePat       = ((*....)!)
actual value             = 7
---------------------------------------------------
patstr                   = ((*.)*)
showPat.compilePat       = ((*.)*)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = ((*.).)
showPat.compilePat       = ((*.).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = ((*(.*)).)
showPat.compilePat       = ((*(.*)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = ((*(*.)).)
showPat.compilePat       = ((*(*.)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = ((((.*))).)
expected value           = 7 (with silent pattern-match failure)
showPat.compilePat       = ((((.*))).)
actual value             = 7
---------------------------------------------------
patstr                   = (.(((.*))).)
showPat.compilePat       = (.(((.*))).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (!(!(.(!!))).)
showPat.compilePat       = (!(!(.(!!))).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (!(!(.*)).)
showPat.compilePat       = (!(!(.*)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*(*(.*)).)
showPat.compilePat       = (*(*(.*)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (..*)
showPat.compilePat       = (..*)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.*)
showPat.compilePat       = (*.*)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = :Tuple3:(*(*(.*)).)
showPat.compilePat       = :Tuple3:(*(*(.*)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :(,,):(*(*(.*)).)
showPat.compilePat       = :(,,):(*(*(.*)).)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :(,,):(*(*(!*)).)
showPat.compilePat       = :(,,):(*(*(!*)).)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = :Bool:(***)
showPat.compilePat       = :Bool:(***)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :Bool*
showPat.compilePat       = compilePat: input not completely consumed
Input remaining: :Bool*
Patterns so far parsed: []
---------------------------------------------------
patstr                   = :Bool:*
showPat.compilePat       = :Bool:*
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :(,,):*
showPat.compilePat       = :(,,):*
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.!)
showPat.compilePat       = (*.!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:Bool:..)
showPat.compilePat       = (*:Bool:..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:Int:..)
showPat.compilePat       = (*:Int:..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:(,):..)
showPat.compilePat       = (*:(,):..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:OutOfScopeType:..)
showPat.compilePat       = (*:OutOfScopeType:..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:[Int]:..)
showPat.compilePat       = (*:[Int]:..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:[Int]:.!)
showPat.compilePat       = (*:[Int]:.!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.:Bool:.)
showPat.compilePat       = (*.:Bool:.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*.:Int:.)
showPat.compilePat       = (*.:Int:.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.:(,):.)
showPat.compilePat       = (*.:(,):.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.:OutOfScopeType:.)
showPat.compilePat       = (*.:OutOfScopeType:.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.:[Int]:.)
showPat.compilePat       = (*.:[Int]:.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:[Int]:*.)
showPat.compilePat       = (*:[Int]:*.)
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = (*:Bool:*.)
showPat.compilePat       = (*:Bool:*.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*:Int:*.)
showPat.compilePat       = (*:Int:*.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*:(,):*.)
showPat.compilePat       = (*:(,):*.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*:OutOfScopeType:*.)
showPat.compilePat       = (*:OutOfScopeType:*.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*.:Bool:*)
showPat.compilePat       = (*.:Bool:*)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*.:Int:*)
showPat.compilePat       = (*.:Int:*)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*.:(,):*)
showPat.compilePat       = (*.:(,):*)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (**2.)
showPat.compilePat       = (**2.)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (**3.)
showPat.compilePat       = (**3.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:G2:..)
showPat.compilePat       = (*:G2:..)
expected value           = 7
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (*:Int:..)
showPat.compilePat       = (*:Int:..)
expected value           = 7
actual value             = Prelude.undefined
--------------------------------------------------
===================================================
exp = (G1, G2 5 __ 7, __) :: (TG, TG, Bool)
get (_,(G2 _ _ n),_) = n
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = (*:G2:..)
showPat.compilePat       = (*:G2:..)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (*:Int:..)
showPat.compilePat       = (*:Int:..)
expected value           = 7
actual value             = 7
--------------------------------------------------
===================================================
exp = G2 5 __ 7 :: TG
get (G2 _ _ n) = n
? = get $ forcep patstr exp
===================================================
patstr                   = *
showPat.compilePat       = *
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = *0
showPat.compilePat       = *0
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = *1
showPat.compilePat       = *1
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = *2
showPat.compilePat       = *2
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = *3
showPat.compilePat       = *3
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (!.!)
showPat.compilePat       = (!.!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (!!!)
showPat.compilePat       = (!!!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (!!)
showPat.compilePat       = (!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = (!!!)
showPat.compilePat       = (!!!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (!!!!)
showPat.compilePat       = (!!!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G1:(!!)
showPat.compilePat       = :G1:(!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G1:(!!!)
showPat.compilePat       = :G1:(!!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G2:(!!)
showPat.compilePat       = :G2:(!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G2:(!!!)
showPat.compilePat       = :G2:(!!!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = :TG:(!!!)
showPat.compilePat       = :TG:(!!!)
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G1:*
showPat.compilePat       = :G1:*
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G2:*
showPat.compilePat       = :G2:*
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = :TG:*
showPat.compilePat       = :TG:*
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :Int:.
showPat.compilePat       = :Int:.
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = :G1:.
showPat.compilePat       = :G1:.
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = :G2:.
showPat.compilePat       = :G2:.
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :TG:.
showPat.compilePat       = :TG:.
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = :Int:.
showPat.compilePat       = :Int:.
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G1:.(!!)
showPat.compilePat       = (:G1:.(!!))
expected value           = 7
actual value             = 7
---------------------------------------------------
patstr                   = :G1:*(!!)
showPat.compilePat       = (:G1:*(!!))
expected value           = 7
actual value             = 7
--------------------------------------------------
===================================================
exp = J2 (1, J4 (J3, K3 __ (J1 4.5))) False
get = (J2 (_, J4 (_, K3 _ (J1 f))) _) = show f
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = ((!((!(!(!)))))!)
showPat.compilePat       = ((!((!(!(!)))))!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ((!((.(!(!))))).)
showPat.compilePat       = ((!((.(!(!))))).)
expected value           = 4.5
actual value             = 4.5
--------------------------------------------------
===================================================
exp = J2 (1, J4 (__, K2)) False
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = ((!((!!)))!)
showPat.compilePat       = ((!((!!)))!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ((!((.!)))!)
showPat.compilePat       = ((!((.!)))!)
expected value           = 1
actual value             = 1
---------------------------------------------------
patstr                   = ((!(.(!!)))!)
showPat.compilePat       = ((!(.(!!)))!)
expected value           = 1
actual value             = 1
---------------------------------------------------
patstr                   = ((!.((!!)))!)
showPat.compilePat       = ((!.((!!)))!)
expected value           = 1
actual value             = 1
--------------------------------------------------
===================================================
exp = J4 (__, K2)
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = ((!!))
showPat.compilePat       = ((!!))
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ((.!))
showPat.compilePat       = ((.!))
expected value           = 1
actual value             = 1
---------------------------------------------------
patstr                   = (.(!!))
showPat.compilePat       = (.(!!))
expected value           = 1
actual value             = 1
---------------------------------------------------
patstr                   = .((!!))
showPat.compilePat       = (.((!!)))
expected value           = 1
actual value             = 1
--------------------------------------------------
===================================================
exp = (__, K2)
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = (!!)
showPat.compilePat       = (!!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (.!)
showPat.compilePat       = (.!)
expected value           = 1
actual value             = 1
---------------------------------------------------
patstr                   = .(!!)
showPat.compilePat       = (.(!!))
expected value           = 1
actual value             = 1
--------------------------------------------------
===================================================
exp = __ :: TJ
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = !
showPat.compilePat       = !
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = .
showPat.compilePat       = .
expected value           = 1
actual value             = Prelude.undefined
--------------------------------------------------
===================================================
exp = (K5 (__::TJ))
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = !
showPat.compilePat       = !
expected value           = okay
actual value             = okay
---------------------------------------------------
patstr                   = (.)
showPat.compilePat       = (.)
expected value           = okay
actual value             = okay
---------------------------------------------------
patstr                   = (!)
showPat.compilePat       = (!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = .
showPat.compilePat       = .
expected value           = okay
actual value             = okay
--------------------------------------------------
===================================================
exp = K3 (__::TK) J3
get ~_ = show 1  -- seems to suffice?!?...
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = !
showPat.compilePat       = !
expected value           = okay
actual value             = okay
---------------------------------------------------
patstr                   = (.!)
showPat.compilePat       = (.!)
expected value           = okay
actual value             = okay
---------------------------------------------------
patstr                   = (!.)
showPat.compilePat       = (!.)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (!!)
showPat.compilePat       = (!!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = .
showPat.compilePat       = .
expected value           = okay
actual value             = okay
--------------------------------------------------
===================================================
exp = L1 5.6 (M1 __)
get (L1 f (M1 _)) = show f
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = .
showPat.compilePat       = .
expected value           = 5.6
actual value             = 5.6
---------------------------------------------------
patstr                   = .(!!)
expected value           = 5.6 (but "# with subpattern" warning)
showPat.compilePat       = (.(!!))
actual value             = 5.6
---------------------------------------------------
patstr                   = (!!)
showPat.compilePat       = (!!)
expected value           = 5.6
actual value             = 5.6
---------------------------------------------------
patstr                   = ((!)!)
showPat.compilePat       = ((!)!)
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ((.)!)
showPat.compilePat       = ((.)!)
expected value           = 5.6
actual value             = 5.6
--------------------------------------------------
===================================================
exp = K3 __ (J1 4.5)
get = (K3 _ (J1 f)) = show f
? = get $ forcep patstr exp
===================================================
patstr                   = 
showPat.compilePat       = compilePat: syntax error
---------------------------------------------------
patstr                   = (!(!))
showPat.compilePat       = (!(!))
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = (..)
showPat.compilePat       = (..)
expected value           = 4.5
actual value             = 4.5
---------------------------------------------------
patstr                   = (.!)
showPat.compilePat       = (.!)
expected value           = 4.5
actual value             = 4.5
---------------------------------------------------
patstr                   = (.(.))
showPat.compilePat       = (.(.))
expected value           = 4.5
actual value             = 4.5
---------------------------------------------------
patstr                   = (.(!))
showPat.compilePat       = (.(!))
expected value           = 4.5
actual value             = 4.5
---------------------------------------------------
patstr                   = (!.(!))
showPat.compilePat       = (!.(!))
expected value           = Prelude.undefined
actual value             = 4.5
---------------------------------------------------
patstr                   = (!.(.))
showPat.compilePat       = (!.(.))
expected value           = Prelude.undefined
actual value             = 4.5
---------------------------------------------------
patstr                   = (..(.))
showPat.compilePat       = (..(.))
expected value           = 4.5
actual value             = 4.5
---------------------------------------------------
patstr                   = .(..(.))
showPat.compilePat       = (.(..(.)))
expected value           = 4.5
actual value             = 4.5
--------------------------------------------------
===================================================
exp = (3.4, [5,__,7], __) :: (Float, [Int], Bool)
get (_,xs,_) = show $ (xs!!2)
? = get $ ( forcep patstr2 . forcep patstr1 ) exp
? = get $! ( forcep_ ( unionPats [ pat1, pat2 ] ) ) exp
(Results were more interesting with a previous semantics...).
===================================================
patstr1                     = !
patstr2                     = !
patstrU                     = !
showPat.compilePat patstr1  = !
showPat.compilePat patstr2  = !
showPat.compilePat patstrU  = !
expected value              = 7
actual value                = 7
actual value                = 7
---------------------------------------------------
patstr1                     = !
patstr2                     = *
patstrU                     = *
showPat.compilePat patstr1  = !
showPat.compilePat patstr2  = *
showPat.compilePat patstrU  = *
expected value              = Prelude.undefined
actual value                = Prelude.undefined
---------------------------------------------------
patstr1                     = *
patstr2                     = !
patstrU                     = *
showPat.compilePat patstr1  = *
showPat.compilePat patstr2  = !
showPat.compilePat patstrU  = *
expected value              = Prelude.undefined
actual value                = Prelude.undefined
---------------------------------------------------
patstr1                     = *
patstr2                     = *
patstrU                     = *
showPat.compilePat patstr1  = *
showPat.compilePat patstr2  = *
showPat.compilePat patstrU  = *
expected value              = Prelude.undefined
actual value                = Prelude.undefined
---------------------------------------------------
patstr1                     = (!!!)
patstr2                     = (*!!)
patstrU                     = (*!!)
showPat.compilePat patstr1  = (!!!)
showPat.compilePat patstr2  = (*!!)
showPat.compilePat patstrU  = (*!!)
expected value              = Prelude.undefined
actual value                = Prelude.undefined
---------------------------------------------------
patstr1                     = (*!!)
patstr2                     = (!!*)
patstrU                     = (*!*)
showPat.compilePat patstr1  = (*!!)
showPat.compilePat patstr2  = (!!*)
showPat.compilePat patstrU  = (*!*)
expected value              = Prelude.undefined
actual value                = Prelude.undefined
---------------------------------------------------
patstr1                     = (!*.)
patstr2                     = (!.!)
patstrU                     = (!*!)
showPat.compilePat patstr1  = (!*.)
showPat.compilePat patstr2  = (!.!)
showPat.compilePat patstrU  = (!*!)
expected value              = Prelude.undefined
actual value                = Prelude.undefined
--------------------------------------------------
===================================================
Testing splicePats.
---------------------------------------------------
target       !
path         []
isibs        [(0,"*")]
result       splicePats: path ends in non-recursive node type WS
---------------------------------------------------
target       ()
path         []
isibs        [(0,"*")]
result       (*)
---------------------------------------------------
target       !
path         [0]
isibs        [(0,"*")]
result       splicePats: path escapes target (depth)
---------------------------------------------------
target       (!!)
path         []
isibs        [(0,"*")]
result       (*!!)
---------------------------------------------------
target       (!!)
path         [0]
isibs        [(0,"*")]
result       splicePats: path ends in non-recursive node type WS
---------------------------------------------------
target       (!!)
path         [2]
isibs        [(0,"*")]
result       splicePats: path escapes target (breadth)
---------------------------------------------------
target       (!!)
path         []
isibs        [(0,"*"),(0,".")]
result       (*.!!)
---------------------------------------------------
target       (!!)
path         []
isibs        [(0,"*"),(1,".")]
result       (*!.!)
---------------------------------------------------
target       (!!)
path         []
isibs        [(1,"."),(0,"*")]
result       (*!.!)
---------------------------------------------------
target       (!!)
path         []
isibs        [(0,"*"),(2,".")]
result       (*!!.)
---------------------------------------------------
target       (!!)
path         []
isibs        [(2,"*"),(2,"."),(2,".")]
result       (!!*..)
---------------------------------------------------
target       (!!)
path         []
isibs        [(-1,"*")]
result       (!!*)
---------------------------------------------------
target       (!!)
path         []
isibs        [(0,"*")]
result       (*!!)
---------------------------------------------------
target       (!!)
path         []
isibs        [(1,"*")]
result       (!*!)
---------------------------------------------------
target       (!!)
path         []
isibs        [(2,"*")]
result       (!!*)
---------------------------------------------------
target       (!!)
path         []
isibs        [(3,"*")]
result       splicePats: insertion indices (0-based) must be
no greater than the number of children
---------------------------------------------------
target       (!(!!)!)
path         [1]
isibs        [(0,"*")]
result       (!(*!!)!)
---------------------------------------------------
target       (!(!!)!)
path         [1]
isibs        [(0,"*3"),(1,"."),(2,"*")]
result       (!(*3!.!*)!)
---------------------------------------------------
target       (!(!!)!)
path         [1,0]
isibs        [(0,"*"),(0,".")]
result       splicePats: path ends in non-recursive node type WS
---------------------------------------------------
target       ((!!!)(()!)!)
path         [1]
isibs        [(0,"*"),(0,".")]
result       ((!!!)(*.()!)!)
---------------------------------------------------
target       ((!!!)(()!)!)
path         [1,0]
isibs        [(0,"*"),(0,".")]
result       ((!!!)((*.)!)!)
---------------------------------------------------
target       ((...)(().).)
path         [1,0]
isibs        [(0,"*"),(0,".")]
result       ((...)((*.).).)
---------------------------------------------------
target       (:(,,):(...)(().).)
path         [1,0]
isibs        [(0,"*"),(0,".")]
result       (:(,,):(...)((*.).).)
===================================================
Testing elidePats.
---------------------------------------------------
target       ((!!)!(!))
path         []
isibs        [0]
result       (!(!))
---------------------------------------------------
target       ((!!)!(!))
path         [0]
isibs        [0]
result       ((!)!(!))
---------------------------------------------------
target       ((!!)!(!))
path         [1]
isibs        [0]
result       elidePats: elision indices (0-based) must be
less than the number of children
---------------------------------------------------
target       ((!!)!(!))
path         [1]
isibs        [1]
result       elidePats: elision indices (0-based) must be
less than the number of children
===================================================
Testing erodePat.
---------------------------------------------------
target       ((!!)!(!))
stdgen       1838733243 2147483398
path         []
result       ((.!)!(!))
---------------------------------------------------
target       ((!!)!(!))
stdgen       739886477 367188984
path         []
result       ((!.)!(!))
---------------------------------------------------
target       ((!!)!(!))
stdgen       1294374074 223185073
path         []
result       ((!.)!(!))
---------------------------------------------------
target       ((!!)!(!))
stdgen       1998638512 1632766708
path         []
result       ((.!)!(!))
---------------------------------------------------
target       ((!!)!(!))
stdgen       2068100998 709377745
path         []
result       ((.!)!(!))
---------------------------------------------------
===================================================
Testing miscellaneous PatUtil functions...
---------------------------------------------------
unionPats test already done test13-1!
---------------------------------------------------
Testing      intersectPats [patA, patB]
patA         (!!!)
patB         (!.)
result       intersectPat: WRWR: encountered arity disparity!
---------------------------------------------------
Testing      subPat patA patB
patA         !
patB         !
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         .
patB         .
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         *
patB         *
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         !
patB         ()
expect       True
result       False
---------------------------------------------------
Testing      subPat patA patB
patA         ()
patB         !
expect       False
result       True
---------------------------------------------------
Testing      subPat patA patB
patA         ()
patB         (!)
intersectPat: WRWR: encountered arity disparity!
---------------------------------------------------
Testing      subPat patA patB
patA         (!)
patB         (!)
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         (!)
patB         (!!)
intersectPat: WRWR: encountered arity disparity!
---------------------------------------------------
Testing      subPat patA patB
patA         (!)
patB         ((!))
expect       True
result       False
---------------------------------------------------
Testing      subPat patA patB
patA         (!!)
patB         (!.)
as expected  False
---------------------------------------------------
Testing      subPat patA patB
patA         (!.)
patB         (!!)
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         (!!)
patB         (!!!)
intersectPat: WRWR: encountered arity disparity!
---------------------------------------------------
Testing      subPat patA patB
patA         ()
patB         (!!!)
intersectPat: WRWR: encountered arity disparity!
---------------------------------------------------
Testing      subPat patA patB
patA         !
patB         (*!.)
expect       True
result       False
---------------------------------------------------
Testing      subPat patA patB
patA         .
patB         (*!.)
as expected  True
---------------------------------------------------
Testing      subPat patA patB
patA         *
patB         (*!.)
as expected  False
---------------------------------------------------
Testing      subPat patA patB
patA         *
patB         (*)
as expected  False
---------------------------------------------------
Testing      subPat patA patB
patA         *
patB         (**)
as expected  False
doit13: unexpected code 4
---------------------------------------------------
Testing      emptyPat
result       .
---------------------------------------------------
Testing      mkPat ([1,2,3],(False,"foo"))
result       ((()(()(()())))(()(()(()(()())))))
---------------------------------------------------
Testing      growPat patA ([1,2,3],(False,"foo"))
patA         ((!(!!))(!(!!)))
result       ((()(()(..)))(()(()(..))))
---------------------------------------------------
Testing      growPat patA ([1,2,3],(False,"foo"))
patA         ((!(!(!!)))(!(!(!!))))
result       ((()(()(()())))(()(()(()(..)))))
---------------------------------------------------
Testing      growPat patA ([1,2,3],(False,"foo"))
patA         ((!(!(!!)))(!(!(!(!!)))))
result       ((()(()(()())))(()(()(()(()())))))
---------------------------------------------------
Testing      shrinkPat patA
patA         ((!(!(!!)))(!(!(!(!!)))))
result       ((.(.(..)))(.(.(.(..)))))
---------------------------------------------------
Testing      shrinkPat patA
patA         ((!(!(!!)))(!(!(!!))))
result       ((.(.(..)))(.(.(..))))
---------------------------------------------------
Testing      shrinkPat patA
patA         ((!(!!))(!(!!)))
result       ((.(..))(.(..)))
---------------------------------------------------
Testing      shrinkPat patA
patA         ((.(!!))(.(*3!)))
result       ((.(..))(.(*2.)))
---------------------------------------------------
Testing      shrinkPat patA
patA         ((.!)(.!))
result       ((..)(..))
---------------------------------------------------
Testing      shrinkPat patA
patA         (!!)
result       (..)
---------------------------------------------------
Testing      shrinkPat patA
patA         !
result       .
---------------------------------------------------
Testing      liftPats patstrlst
patstrs      ["(!!!)","(!.)"]
result       ((!!!)(!.))
---------------------------------------------------
splicePats test already done test13-10!
---------------------------------------------------
isPath test already done test13-11!
---------------------------------------------------
Testing      mkPatN 2 ([1,2,3],(False,"foo"))
result       ((()(..))(()(..)))
---------------------------------------------------

Testing fusion
-fenable-rewrite-rules -O -ddump-rules -ddump-simpl-stats -ddump-rule-firings

7
7
7
7

expN_1 = [__] :: [Int]
expN_2 = [0,1,__,3] :: [Int]
expN_3 = (3.4, [5,__,7], True) :: (Float, [Int], Bool)
expN_4 = (3.4, [5,__,7], __) :: (Float, [Int], Bool)

getN_1 xs = show $ ()
getN_2 xs = show $ (xs!!3)
getN_3 (_,xs,_) = show $ (xs!!2)
forcen 0 expN_1 `seq` ()  =  ()
forcen 1 expN_1 `seq` ()  =  ()
forcen 2 expN_1 `seq` ()  =  Prelude.undefined
forcen 3 expN_1 `seq` ()  =  Prelude.undefined
forcen 4 expN_1 `seq` ()  =  Prelude.undefined

getN_2 $ forcen 0 expN_2  =  3
getN_2 $ forcen 1 expN_2  =  3
getN_2 $ forcen 2 expN_2  =  3
getN_2 $ forcen 3 expN_2  =  3
getN_2 $ forcen 4 expN_2  =  Prelude.undefined

getN_3 $ forcen 0 expN_3  =  7
getN_3 $ forcen 1 expN_3  =  7
getN_3 $ forcen 2 expN_3  =  7
getN_3 $ forcen 3 expN_3  =  7
getN_3 $ forcen 4 expN_3  =  Prelude.undefined

getN_3 $ forcen 0 expN_4  =  7
getN_3 $ forcen 1 expN_4  =  7
getN_3 $ forcen 2 expN_4  =  Prelude.undefined
getN_3 $ forcen 3 expN_4  =  Prelude.undefined
getN_3 $ forcen 4 expN_4  =  Prelude.undefined

===================================================
Testing generic GNFDataN (refer to Foo.hs for the defs).

---------------------------------------------------
( getB_1 $ forcen 0  expTB_1 )  True
( getB_1 $ forcen 1  expTB_1 )  True
( getB_1 $ forcen 2  expTB_1 )  True
( getB_1 $ forcen 3  expTB_1 )  True
( getB_1 $ forcen 4  expTB_1 )  True
( getB_1 $ forcen 5  expTB_1 )  True
( getB_1 $ forcen 6  expTB_1 )  True
( getB_1 $ forcen 7  expTB_1 )  True
( getB_1 $ forcen 8  expTB_1 )  True
( getB_1 $ forcen 9  expTB_1 )  True
( getB_1 $ forcen 10 expTB_1 )  True
( getB_1 $ forcen 0  expTB_2 )  True
( getB_1 $ forcen 1  expTB_2 )  True
( getB_1 $ forcen 2  expTB_2 )  True
( getB_1 $ forcen 3  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_2 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_2 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 1  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 2  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_3 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_3 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 1  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 2  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_4 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_4 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_5 )  True
( getB_1 $ forcen 1  expTB_5 )  True
( getB_1 $ forcen 2  expTB_5 )  True
( getB_1 $ forcen 3  expTB_5 )  True
( getB_1 $ forcen 4  expTB_5 )  True
( getB_1 $ forcen 5  expTB_5 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_5 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_5 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_5 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_5 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_5 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_6 )  True
( getB_1 $ forcen 1  expTB_6 )  True
( getB_1 $ forcen 2  expTB_6 )  True
( getB_1 $ forcen 3  expTB_6 )  True
( getB_1 $ forcen 4  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_6 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_6 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 1  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 2  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_7 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_7 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_8 )  True
( getB_1 $ forcen 1  expTB_8 )  True
( getB_1 $ forcen 2  expTB_8 )  True
( getB_1 $ forcen 3  expTB_8 )  True
( getB_1 $ forcen 4  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_8 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_8 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_9 )  True
( getB_1 $ forcen 1  expTB_9 )  True
( getB_1 $ forcen 2  expTB_9 )  True
( getB_1 $ forcen 3  expTB_9 )  True
( getB_1 $ forcen 4  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_9 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_9 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_10 )  True
( getB_1 $ forcen 1  expTB_10 )  True
( getB_1 $ forcen 2  expTB_10 )  True
( getB_1 $ forcen 3  expTB_10 )  True
( getB_1 $ forcen 4  expTB_10 )  True
( getB_1 $ forcen 5  expTB_10 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_10 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_10 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_10 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_10 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_10 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_11 )  True
( getB_1 $ forcen 1  expTB_11 )  True
( getB_1 $ forcen 2  expTB_11 )  True
( getB_1 $ forcen 3  expTB_11 )  True
( getB_1 $ forcen 4  expTB_11 )  True
( getB_1 $ forcen 5  expTB_11 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_11 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_11 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_11 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_11 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_11 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_12 )  True
( getB_1 $ forcen 1  expTB_12 )  True
( getB_1 $ forcen 2  expTB_12 )  True
( getB_1 $ forcen 3  expTB_12 )  True
( getB_1 $ forcen 4  expTB_12 )  True
( getB_1 $ forcen 5  expTB_12 )  True
( getB_1 $ forcen 6  expTB_12 )  True
( getB_1 $ forcen 7  expTB_12 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_12 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_12 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_12 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_13 )  True
( getB_1 $ forcen 1  expTB_13 )  True
( getB_1 $ forcen 2  expTB_13 )  True
( getB_1 $ forcen 3  expTB_13 )  True
( getB_1 $ forcen 4  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_13 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_13 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_14 )  True
( getB_1 $ forcen 1  expTB_14 )  True
( getB_1 $ forcen 2  expTB_14 )  True
( getB_1 $ forcen 3  expTB_14 )  True
( getB_1 $ forcen 4  expTB_14 )  True
( getB_1 $ forcen 5  expTB_14 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_14 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_14 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_14 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_14 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_14 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_15 )  True
( getB_1 $ forcen 1  expTB_15 )  True
( getB_1 $ forcen 2  expTB_15 )  True
( getB_1 $ forcen 3  expTB_15 )  True
( getB_1 $ forcen 4  expTB_15 )  True
( getB_1 $ forcen 5  expTB_15 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_15 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_15 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_15 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_15 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_15 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_16 )  5
( getB_1 $ forcen 1  expTB_16 )  5
( getB_1 $ forcen 2  expTB_16 )  5
( getB_1 $ forcen 3  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_16 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_16 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_17 )  5
( getB_1 $ forcen 1  expTB_17 )  5
( getB_1 $ forcen 2  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_17 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_17 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_18 )  5
( getB_1 $ forcen 1  expTB_18 )  5
( getB_1 $ forcen 2  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_18 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_18 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_19 )  False
( getB_1 $ forcen 1  expTB_19 )  False
( getB_1 $ forcen 2  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_19 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_19 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_20 )  beesix
( getB_1 $ forcen 1  expTB_20 )  beesix
( getB_1 $ forcen 2  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_20 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_20 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_21 )  <bah>
( getB_1 $ forcen 1  expTB_21 )  <bah>
( getB_1 $ forcen 2  expTB_21 )  <bah>
( getB_1 $ forcen 3  expTB_21 )  <bah>
( getB_1 $ forcen 4  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_21 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_21 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_22 )  <bah>
( getB_1 $ forcen 1  expTB_22 )  <bah>
( getB_1 $ forcen 2  expTB_22 )  <bah>
( getB_1 $ forcen 3  expTB_22 )  <bah>
( getB_1 $ forcen 4  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_22 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_22 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_23 )  <bah>
( getB_1 $ forcen 1  expTB_23 )  <bah>
( getB_1 $ forcen 2  expTB_23 )  <bah>
( getB_1 $ forcen 3  expTB_23 )  <bah>
( getB_1 $ forcen 4  expTB_23 )  <bah>
( getB_1 $ forcen 5  expTB_23 )  <bah>
( getB_1 $ forcen 6  expTB_23 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_23 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_23 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_23 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_23 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_24 )  <bah>
( getB_1 $ forcen 1  expTB_24 )  <bah>
( getB_1 $ forcen 2  expTB_24 )  <bah>
( getB_1 $ forcen 3  expTB_24 )  <bah>
( getB_1 $ forcen 4  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_24 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_24 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_25 )  <bah>
( getB_1 $ forcen 1  expTB_25 )  <bah>
( getB_1 $ forcen 2  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 3  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 4  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 5  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 6  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 7  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_25 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_25 )  Prelude.undefined
( getB_1 $ forcen 0  expTB_26 )  <bah>
( getB_1 $ forcen 1  expTB_26 )  <bah>
( getB_1 $ forcen 2  expTB_26 )  <bah>
( getB_1 $ forcen 3  expTB_26 )  <bah>
( getB_1 $ forcen 4  expTB_26 )  <bah>
( getB_1 $ forcen 5  expTB_26 )  <bah>
( getB_1 $ forcen 6  expTB_26 )  <bah>
( getB_1 $ forcen 7  expTB_26 )  Prelude.undefined
( getB_1 $ forcen 8  expTB_26 )  Prelude.undefined
( getB_1 $ forcen 9  expTB_26 )  Prelude.undefined
( getB_1 $ forcen 10 expTB_26 )  Prelude.undefined


Testing SOP rnfpDyn with SYB generic stop condition.

Float
WR
BBB 3.4
[Int]
WI
AAA 
Bool
WI
AAA 
7

Testing SOP/SYB rnfpDyn again.

[[Int]]
Noo-C
WI
Noo-C
AAA 
[[[Int]]]
Noo-D
WI
Noo-D
AAA 
6

Testing SOP rnfpDyn' with SOP generic stop condition.

*** :
WR
Testing SOP rnfpDyn'' with Typeable generic stop condition

[[Int]]
WI
AAA 
[[[Int]]]
WI
AAA 
7

Testing Seqable class (tuple with list):

===================================================
exp = <refer to test code>
get (_,xs,_) = show $ (xs!!2)
? = get $! exp
===================================================
1 expected value           = 7
1 actual value             = 7
---------------------------------------------------
2 expected value           = Prelude.undefined
2 actual value             = Prelude.undefined
---------------------------------------------------
3 expected value           = Prelude.undefined
3 actual value             = Prelude.undefined
---------------------------------------------------
4 expected value           = 7
4 actual value             = 7
---------------------------------------------------
5 expected value           = 7
5 actual value             = 7
---------------------------------------------------
6 expected value           = Prelude.undefined
6 actual value             = Prelude.undefined
---------------------------------------------------
7 expected value           = 7
7 actual value             = 7
---------------------------------------------------
8 expected value           = 7
8 actual value             = 7
---------------------------------------------------
9 expected value           = 7
9 actual value             = 7
--------------------------------------------------

Testing Seqable class (nested tuples):

===================================================
exp = <refer to test code>
get (_,(_,x),_) = show x
? = get $! exp
===================================================
1 expected value           = 7
1 actual value             = 7
---------------------------------------------------
2 expected value           = 7
2 actual value             = 7
---------------------------------------------------
3 expected value           = Prelude.undefined
3 actual value             = Prelude.undefined
---------------------------------------------------
4 expected value           = Prelude.undefined
4 actual value             = Prelude.undefined
---------------------------------------------------
5 expected value           = Prelude.undefined
5 actual value             = Prelude.undefined
---------------------------------------------------
6 expected value           = 7
6 actual value             = 7
---------------------------------------------------
7 expected value           = Prelude.undefined
7 actual value             = Prelude.undefined
---------------------------------------------------
8 expected value           = 7
8 actual value             = 7
---------------------------------------------------
9 expected value           = Prelude.undefined
9 actual value             = Prelude.undefined
--------------------------------------------------

Testing generic Seqable (tuple with list):

===================================================
exp = <refer to test code>
get (_,xs,_) = show $ (xs!!2)
? = get $! exp
===================================================
1 expected value           = 7
1 actual value             = 7
---------------------------------------------------
2 expected value           = Prelude.undefined
2 actual value             = Prelude.undefined
---------------------------------------------------
3 expected value           = Prelude.undefined
3 actual value             = Prelude.undefined
---------------------------------------------------
4 expected value           = 7
4 actual value             = 7
---------------------------------------------------
5 expected value           = 7
5 actual value             = 7
---------------------------------------------------
6 expected value           = Prelude.undefined
6 actual value             = Prelude.undefined
---------------------------------------------------
7 expected value           = 7
7 actual value             = 7
---------------------------------------------------
8 expected value           = 7
8 actual value             = 7
---------------------------------------------------
9 expected value           = 7
9 actual value             = 7
--------------------------------------------------

Testing generic Seqable (expTJ_*):

===================================================
exp = J2 (1, J4 (__, K3 __ (J1 4.5))) __
get = (J2 (_, J4 (_, K3 _ (J1 f))) _) = show f
? = get exp
===================================================
1 expected value           = 4.5
1 actual value             = 4.5
---------------------------------------------------
2 expected value           = Prelude.undefined
2 actual value             = Prelude.undefined
---------------------------------------------------
3 expected value           = 4.5
3 actual value             = 4.5
---------------------------------------------------
4 expected value           = Prelude.undefined
4 actual value             = Prelude.undefined
---------------------------------------------------
5 expected value           = Prelude.undefined
5 actual value             = Prelude.undefined
---------------------------------------------------
6 expected value           = Prelude.undefined
6 actual value             = Prelude.undefined
--------------------------------------------------

Testing PatNodeAttrs (pattern node attributes):

===================================================
exp = G2 5 __ 7 :: TG
get (G2 _ _ n) = n
? = get $ forcep patstr exp
===================================================
patstr                   = ^^!
showPat.compilePat       = compilePat: input not completely consumed
Input remaining: ^^!
Patterns so far parsed: []
---------------------------------------------------
patstr                   = ^=^!
showPat.compilePat       = compilePat: input not completely consumed
Input remaining: ^=^!
Patterns so far parsed: []
---------------------------------------------------
patstr                   = =*
showPat.compilePat       = =*
expected value           = Prelude.undefined
actual value             = 7
---------------------------------------------------
patstr                   = +*
showPat.compilePat       = +*
expected value           = Prelude.undefined
NFDataP: TRACE: 0 TG
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ^*
showPat.compilePat       = ^*
expected value           = Prelude.undefined
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = +^!
showPat.compilePat       = +^!
expected value           = 7
NFDataP: TRACE: 0 TG
actual value             = 7
---------------------------------------------------
patstr                   = +^*
showPat.compilePat       = +^*
expected value           = Prelude.undefined
NFDataP: TRACE: 0 TG
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = +^(.!.)
showPat.compilePat       = +^(.!.)
expected value           = Prelude.undefined
NFDataP: TRACE: 0 TG
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ^+()
showPat.compilePat       = +^()
expected value           = 7 (due to pattern-match failure)
actual value             = 7
---------------------------------------------------
patstr                   = ^+(!!)
showPat.compilePat       = +^(!!)
expected value           = 7 (due to pattern-match failure)
actual value             = 7
---------------------------------------------------
patstr                   = ^+(!!!)
showPat.compilePat       = +^(!!!)
expected value           = Prelude.undefined
NFDataP: TRACE: 0 TG
actual value             = Prelude.undefined
---------------------------------------------------
patstr                   = ^+(!!!!)
showPat.compilePat       = +^(!!!!)
expected value           = 7 (due to pattern-match failure)
actual value             = 7
--------------------------------------------------

Testing PatNodeAttrs (pattern node attributes):

===================================================
exp = (([0..999999],[1000000..1999999]),[2000000..3999999])
get ((xs,ys),zs) = show ((last xs,last ys),last zs)
? = get $ forcep patstr exp
===================================================
patstr                   = +( +>ba(+*+*)=+*)
showPat.compilePat       = +(>ba+(+*+*)=+*)
expected value           = ((999999,1999999),3999999)
NFDataP: TRACE: 0 (([Int],[Int]),[Int])
NFDataP: TRACE: 1 ([Int],[Int])
NFDataP: TRACE: 3 [Int]
NFDataP: TRACE: 2 [Int]
NFDataP: TRACE: 4 [Int]
actual value             = ((999999,1999999),3999999)
---------------------------------------------------
patstr                   = +(=+>ba(+*+*) +*)
showPat.compilePat       = +(=>ba+(+*+*)+*)
expected value           = ((999999,1999999),3999999)
NFDataP: TRACE: 0 (([Int],[Int]),[Int])
NFDataP: TRACE: 1 ([Int],[Int])
NFDataP: TRACE: 4 [Int]
actual value             = ((999999,1999999),3999999)
--------------------------------------------------


FAILING ON PURPOSE TO DISPLAY THE LOGGED OUTPUT!

                                          ### Failure in: All:0
expected: 0
 but got: 1
Cases: 1  Tried: 1  Errors: 0  Failures: 1
*** Exception: ExitFailure 1
>> ^D
Leaving GHCi.