Comparison with prior version
Previously, using an older version of shrinkPat, it worked out more smoothly, as shown below; so the listing above [at this page] is rather longer [not anymore] and raises some questions I don't yet have answers for, but the net result is the same, and the comments following [at that link] are all still valid.
(Actually, the numbers have not worked out quite this way for a long time anyway; this portays results from pre-published versions...).
Seeing these side-by-side (as it were...) is giving me a whistful feeling about the old pattern syntax. Fortunately, whether to use braces or parens, and whether to use !/. or ./#, are still options available through the deepseq-bounded package flags.
live alloc type P . 457296 3341600 TA P {...} 698872 5220200 TA P {{...}..} 954252 6063164 TA P {{..{.}}..} 1243156 6572740 TA P {{..{{.#..}}}.{..}} 1452016 8829248 TA P {{.{.}{{{.}#.{.}}}}.{.{.}}} 319744 10577588 TA P {{.{.}{{{.}#.{.}}}}.{.{.}}} 159284 8870360 TA P {{.{.}{{{.}#.{.}}}}.{.{.}}} 150004 8826904 TA P {{.{.}{{{.}#.{.}}}}.{.{.}}} 190012 8748076 TA P {{.{.}{{{.}#.{.}}}}.{.{.}}} 128232 8867404 TAAnd with the new concrete syntax, but same old shrinkPat used:
live alloc type P ! 457296 3341600 TA P (!!!) 698872 5220200 TA P ((!!!)!!) 954252 6063164 TA P ((!!(!))!!) 1243156 6572740 TA P ((!!((!.!!)))!(!!)) 1452016 8829248 TA P ((!(!)(((!).!(!))))!(!(!))) 319744 10577588 TA P ((!(!)(((!).!(!))))!(!(!))) 159284 8870360 TA P ((!(!)(((!).!(!))))!(!(!))) 150004 8826904 TA P ((!(!)(((!).!(!))))!(!(!))) 190012 8748076 TA P ((!(!)(((!).!(!))))!(!(!))) 128232 8867404 TAThis seems like a usability regression, but the truth is, this is an extreme case, and normally '!' characters will be infrequent, and '.' characters (which do no forcing) will typically predominate amongst leaves of a pattern. Still, if going to prefer parens to braces, might like to reconsider '!' as it is visually too similar to a parenthesis. Some of these issues can be resolved by adding whitespace within the pattern strings (which is permitted). Also, much depends on fonts, and if colour of even greyscale is available this may be a non-issue.
In fact, to show how beneficial vertical alignment is to the human perception, let's see the new output (more interesting initial sequence) with padding added by hand:
P . 232448 1776868 TA P ( ) 302720 1719280 TA P (. .. ) 372968 3057960 TA P (( ).. ) 442528 3579160 TA P ((.. . ).. ) 507104 4907900 TA P ((.. () ).. ) 579448 5364696 TA P ((.. (.) ).. ) 640096 5853972 TA P ((.. (() )).( )) 739964 6867304 TA P ((.. ((. ... ))).(.. )) 833820 9551912 TA P ((.() ((() ..() ))).(.() )) 918912 9564540 TA P ((.(.)(((.)..(.)))).(.(.))) 1006188 11230432 TA P ((!(!)(((!).!(!))))!(!(!))) 204624 14250596 TAAt which point I notice that shrinkPat is wrong... Anyway, does that even help much? It seems like a person wants more than ASCII graphics to cope with this...
Correct sequence for shrinkPat should be like (for example):
(.(!)) (!(!)) (!(.!)) (.(.)) (.(.)) (.(..)) (.!) or (.!) or (.!) (..) (..) (..) ! ! ! . . .And certainly, you don't produce ()'s!
After fixing that:
P . 227756 1769792 TA P (. .. ) 296620 3060904 TA P ((.. . ).. ) 360508 4908612 TA P ((.. (. )).. ) 421472 5852124 TA P ((.. ((. ... ))).(.. )) 521860 9556760 TA P ((.(.)(((.)..(.)))).(.(.))) 607100 11270660 TA P ((!(!)(((!).!(!))))!(!(!))) 1925776 2392040 TA
What the heck, I'll paste that above, although it is hand-padded...
And here's what had in main document before the shrinkPat fix, as I don't have the heart to delete it yet. :)
live alloc type
P . 232448 1776868 TA
P () 302720 1719280 TA
P (...) 372968 3057960 TA
P (()..) 442528 3579160 TA
P ((...)..) 507104 4907900 TA
P ((..())..) 579448 5364696 TA
P ((..(.))..) 640096 5853972 TA
P ((..(())).()) 739964 6867304 TA
P ((..((....))).(..)) 833820 9551912 TA
P ((.()((()..()))).(.())) 918912 9564540 TA
*
P ((.(.)(((.)..(.)))).(.(.))) 1006188 11230432 TA
P ((!(!)(((!).!(!))))!(!(!))) 204624 14250596 TA
P ((!(!)(((!).!(!))))!(!(!))) 208800 11236580 TA
P ((!(!)(((!).!(!))))!(!(!))) 213112 11242000 TA
P ((!(!)(((!).!(!))))!(!(!))) 217436 11353868 TA
P ((!(!)(((!).!(!))))!(!(!))) 221852 11250772 TA
P ((!(!)(((!).!(!))))!(!(!))) 126192 11275044 TA
P ((!(!)(((!).!(!))))!(!(!))) 130876 11131820 TA
*
8 lines cut; exact output depends on seed chosen etc.