Higher-Order Perl

Acknowledgments

Every acknowledgments section begins with a statement to the effect
that "without the untiring support and assistance from my editor, Tim
Cox, this book would certainly never have been written". Until you
write a book, you will never realize how true this is. Words fail me
here; saying that the book would not have been written without Tim's
untiring support and assistance doesn't begin to do justice to his
contributions, his kindness, and his vast patience. Thank you, Tim.

This book was a long time in coming, and Tim went through three assistants
while I was working on it. All these people were helpful and competent, so
my thanks to Brenda Modliszewksi, Stacie Pierce, and Richard Camp.
"Competent" may sound faint, but I consider it the highest
praise.

Many thanks to Troy Lilly and Simon Crump, the production managers, who
were not only competent but also fun to work with.

Shortly before the book went into production, I started writing tests for
the example code. I realized with horror that hardly any of the programs
worked properly. There were numerous small errors (and some not so small),
inconsistencies between the code and the output, typos, and so on. Thanks
to the heroic eleventh-hour efforts of Robert Spier, I think most of these
errors have been caught. Robert was not only unfailingly competent,
helpful, and productive, but also unfailingly cheerful, too. If any of the
example programs in this book work as they should, you can thank Robert.
(If they don't, you should blame me, not Robert.) Robert was also
responsible for naming the MOD document preparation system that I used to
prepare the manuscript.

The contributions of my wife, Lorrie Kim, are too large and pervasive to
note individually. It is to her that this book is dedicated.

A large number of other people contributed to this book, but many
of them were not aware of it at the time. I was fortunate to have a
series of excellent teachers, whose patience I must sometimes have
tried terribly. Thanks to Mark Foster, Patrick
X. Gallagher, Joan Livingston, Cal
Lobel (who first taught me to program), Harry
McLaughlin, David
A. J. Meyer, Bruce
Piper, Ronnie Rabassa, Michael
Tempel, and Johan
Tysk. Mark Foster also arrived from nowhere in the nick of time to
suggest the title for this book just when I thought all was lost.

The official technical reviewers had a less rewarding job than they might
have on other projects. This book took a long time to write, and although
I wanted to have long conversations with the reviewers about every little
thing, I was afraid that if I did that, I would never ever finish. So I
rarely corresponded with the reviewers, and they probably thought that I
was just filing their suggestions in the shredder. But I wasn't; I pored
over all their comments with the utmost care, and agonized over most of
them. My thanks to the reviewers: Sean Burke, Damian Conway, Kevin Lenzo,
Peter Norvig, Dan Schmidt, Kragen Sitaker, Michael Scott, and Adam
Turoff.

While I was writing, I ran a mailing list for people who were interested
in the book, and sent advance chapters to the mailing list. This was
tremendously helpful, and I'd recommend the practice to anyone else. The
six hundred and fifty wonderful members of my mailing list are too
numerous to list here. All were helpful and supportive, and the book is
much better for their input. A few stand out as having contributed a
particularly large amount of concrete material: Roland Young, Damien
Warman, David "Novalis" Turner, Iain "Spoon" Truskett, Steve Tolkin,
Ben Tilly, Rob Svirskas, Roses Longin Odounga, Luc St-Louis, Jeff
Mitchell, Steffen Müller, Abhijit Menon-Sen, Walt Mankowski, Wolfgang
Laun, Paul Kulchenko, Daniel Koo, Andy Lester, David Landgren, Robin
Houston, Torsten Hofmann, Douglas Hunter, Francesc Guasch, Kenneth Graves,
Jeff Goff, Michael Fischer, Simon Cozens, David Combs, Stas Bekman, Greg
Bacon, Darius Bacon, and Peter Allen. My apologies to the many many
helpful contributors whom I have deliberately omitted from this list in
the interests of space, and even more so to the several especially helpful
contributors whom I have accidentally omitted.

Wolfgang Laun and Per Westerlund were particularly assiduous in helping me
correct errors for the second printing.

Before I started writing, I received valuable advice about choosing a
publisher from Philip Greenspun, Brian Kernighan, and Adam Turoff. Damian
Conway and Abigail gave me helpful advice and criticism about my
proposal.

Sean Burke recorded my Ivory Tower talk, cut CDs and sent them to me, and
also supplied RTF-related consulting at the last minute. He also sent me
periodic mail to remind me how wonderful my book was, which often arrived
at times when I wasn't so sure.

When I needed to read out-of-print books by Paul Graham, A. E. Sundstrom
lent them to me. When I needed a copy of volume 2 of The Art of
Computer Programming, Hildo Biersma and Morgan Stanley bought it for me.
When I needed money, B. B. King lent me some. Thanks to all of
you.

The constraint system drawing program of Chapter 9 was a big project, and
I was stuck on it for a long time. Without the timely assistance of Wm
Leler, I might still be stuck.

Tom Christiansen, Jon Orwant, and Nat Torkington played essential and
irreplaceable roles in integrating me into the Perl community.

Finally, the list of things "without which this book could not have been
written" cannot be complete without thanking Larry Wall for writing Perl
and for founding the Perl community, without which this book could not
have been written.