Higher-Order Perl

About the Software

All Software (code listings) presented in the book can be found on the companion website for the book (http://perl.plover.com/hop/) and is subject to the License agreements below.

ELSEVIER SOFTWARE LICENSE AGREEMENT

Please read the following agreement carefully before using this Software. This Software is licensed under the terms contained in this Software license agreement ("agreement"). By using this Software product, you, an individual, or entity including employees, agents and representatives ("you" or "your"), acknowledge that you have read this agreement, that you understand it, and that you agree to be bound by the terms and conditions of this agreement. Elsevier inc. ("Elsevier") expressly does not agree to license this Software product to you unless you assent to this agreement. If you do not agree with any of the following terms, do not use the Software.

LIMITED WARRANTY AND LIMITATION OF LIABILITY

YOUR USE OF THIS SOFTWARE IS AT YOUR OWN RISK. NEITHER ELSEVIER NOR ITS LICENSORS REPRESENT OR WARRANT THAT THE SOFTWARE PRODUCT WILL MEET YOUR REQUIREMENTS OR THAT ITS OPERATION WILL BE UNINTERRUPTED OR ERROR-FREE. WE EXCLUDE AND EXPRESSLY DISCLAIM ALL EXPRESS AND IMPLIED WARRANTIES NOT STATED HEREIN, INCLUDING THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN ADDITION, NEITHER ELSEVIER NOR ITS LICENSORS MAKE ANY REPRESENTATIONS OR WARRANTIES, EITHER EXPRESS OR IMPLIED, REGARDING THE PERFORMANCE OF YOUR NETWORK OR COMPUTER SYSTEM WHEN USED IN CONJUNCTION WITH THE SOFTWARE PRODUCT. WE SHALL NOT BE LIABLE FOR ANY DAMAGE OR LOSS OF ANY KIND ARISING OUT OF OR RESULTING FROM YOUR POSSESSION OR USE OF THE SOFTWARE PRODUCT CAUSED BY ERRORS OR OMISSIONS, DATA LOSS OR CORRUPTION, ERRORS OR OMISSIONS IN THE PROPRIETARY MATERIAL, REGARDLESS OF WHETHER SUCH LIABILITY IS BASED IN TORT, CONTRACT OR OTHERWISE AND INCLUDING, BUT NOT LIMITED TO, ACTUAL, SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL DAMAGES. IF THE FOREGOING LIMITATION IS HELD TO BE UNENFORCEABLE, OUR MAXIMUM LIABILITY TO YOU SHALL NOT EXCEED THE AMOUNT OF THE PURCHASE PRICE PAID BY YOU FOR THE SOFTWARE PRODUCT. THE REMEDIES AVAILABLE TO YOU AGAINST US AND THE LICENSORS OF MATERIALS INCLUDED IN THE SOFTWARE PRODUCT ARE EXCLUSIVE.

YOU UNDERSTAND THAT ELSEVIER, ITS AFFILIATES, LICENSORS, SUPPLIERS AND AGENTS, MAKE NO WARRANTIES, EXPRESSED OR IMPLIED, WITH RESPECT TO THE SOFTWARE PRODUCT, INCLUDING, WITHOUT LIMITATION THE PROPRIETARY MATERIAL, AND SPECIFICALLY DISCLAIM ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

IN NO EVENT WILL ELSEVIER, ITS AFFILIATES, LICENSORS, SUPPLIERS OR AGENTS, BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, WITHOUT LIMITATION, ANY LOST PROFITS, LOST SAVINGS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES, ARISING OUT OF YOUR USE OR INABILITY TO USE THE SOFTWARE PRODUCT REGARDLESS OF WHETHER SUCH DAMAGES ARE FORESEEABLE OR WHETHER SUCH DAMAGES ARE DEEMED TO RESULT FROM THE FAILURE OR INADEQUACY OF ANY EXCLUSIVE OR OTHER REMEDY.

Software License Agreement

This Software License Agreement is a legal agreement between the Author and any person or legal entity using or accepting any Software governed by this Agreement. The Software is available on the companion website (http://perl.plover.com/hop/) for the Book, Higher-Order Perl, which is published by Morgan Kaufmann Publishers. "The Software" is comprised of all code (fragments and pseudocode) presented in the book.

By installing, copying, or otherwise using the Software, you agree to be bound by the terms of this Agreement.

The parties agree as follows:

  1. Grant of License. We grant you a nonexclusive license to use the Software for any purpose, commercial or non-commercial, as long as the following credit is included identifying the original source of the Software: "from Higher-Order Perl by Mark Dominus, published by Morgan Kaufmann Publishers, Copyright 2005 by Elsevier Inc".

  2. Disclaimer of Warranty. We make no warranties at all. The Software is transferred to you on an "as is" basis. You use the Software at your own peril. You assume all risk of loss for all claims or controversies, now existing or hereafter, arising out of use of the Software. We shall have no liability based on a claim that your use or combination of the Software with products or data not supplied by us infringes any patent, copyright, or proprietary right. All other warranties, expressed or implied, including, without limitation, any warranty of merchantability or fitness for a particular purpose are hereby excluded.

  3. Limitation of Liability. We will have no liability for special, incidental, or consequential damages even if advised of the possibility of such damages. We will not be liable for any other damages or loss in any way connected with the Software.

Download license



Under Construction

I'm still in the process of getting this part of the web site into shape. The files here are very disorganized. There are obsolete versions, duplicate versions, files with the wrong names, some incomplete code files, and so on. I'll be trying to straighten this out in the coming weeks. If something doesn't seem right, or if you can't seem to find what you want, please let me know and I will fix it right away.

linogram

Development on linogram, the constraint-based drawing system of chapter 9, has continued. Up-to-date sources and status information are available.

Examples by Name

A alternate-cont alternate-continuation alternate-parsers append_optimized AST-to-string AST_to_string
B binary binary-1 binary-2 binary-3 binary1 binary2 binary3
C calculator cgrep check-move check_move chrono-1 chrono-2 chrono-3 chrono-orc chrono-orcish chronologically chronologically-2 chronologically-3 chronologically-orcish closure-example cmap combine2 combine2-shorter combine2.1 concatenate-cont concatenate-continuation concatenate-parsers concatenate2-cont concatenate2-continuation Constraint.pm curry-eval curry-set-proto curry-set_proto curry.eval Curry.pm curry.set_prototype curry_eval
D db.txt def-cdir-tablearg def-conf-dir define_config_directive define_config_directive_tablearg delivery-charge dfs-parser DFSParser.pm dir-walk-cb dir-walk-cb-def dir-walk-curried dir-walk-iterator dir-walk-simple dir-walk-sizehash dir_walk-iterator dir_walk_callbacks dir_walk_callbacks_defaults dir_walk_curried dir_walk_filter_iterator dir_walk_filter_recursive dir_walk_simple dqp.pl
E Environment.pm Equation.pm expr-parser-2.pl expr-parser.pl extract-headers extract_headers
F factorial factorial-0 factorial-1 factorial-2 factorial-broken factorial0 factorial1 factorial2 factorial_nonreentrant fib fib-0 fib-1 fib-10 fib-11 fib-12 fib-2 fib-3 fib-4 fib-5 fib-6 fib-7 fib-8 fib-9 fib-automemo fib-cached fib0 fib1 fib10 fib11 fib12 fib2 fib3 fib4 fib5 fib6 fib7 fib8 fib9 find-share find_share.pl FlatDB.pm FlatDB_Composable.pm FlatDB_Compose.pm FlatDB_Overloaded.pm FlatDB_Ovl.pm flatten-imap fold
G gcd gcd2 Grasshopper.pl
H hamming.pl hanoi
I interesting-files interesting_files interleave it2stream.pl iterate-function iterate_function Iterator.pm ItRobot1.pl ItRobot2.pl ItRobot3.pl ItRobot4.pl ItRobot5.pl ItRobot6.pl ItRobot7.pl ItRobot8.pl ItRobot9.pl ItRobot10.pl iterator-memtrack.pl iterator-to-stream.pl iterator-utils.pl Iterator_Logic.pm Iterator_memory_tracking Iterator_Utils.pm
L Lexer.pm Lexutil.pm link-callouts linogram.pl Local_Propagation.pm local-propagation logfile-process lookfor lookfor-cont lookfor-continuation
M make-dfs make-dfs-final make-dfs-search make-dfs-search-final make-dfs-search-simple make-dfs-simple make-dfs-value make-genes-1 make-genes-2 make-part-dfs-1 make-part-dfs-2 make-part-sorted make-partition-1 make-partition-2 make-value-search make_charstream make_genes make_genes-2 make_lexer make_partition make_partition_cleaner make_partition_dfs make_partition_dfs_search make_partition_partitions memoize memoize-method memoize-norm1 memoize-norm2 memoize-norm3 memoize-norm4 memoize-normalize memoize-normalize2 memoize-normalize3 memoize-normalize4 memoize_method memusage.pl
N Newton.pm Node.pm nothing-cont nothing-continuation
O operator operator-singleop outline-parser outline-parser-2 owed
P parser Parser.pm Parser::Debug.pm Parser::Except.pm Parser::Exception.pm Parser_Overloaded.pm partition partition-all partition-it partition-it-2 partition-it-opt partition-it-optimized partition-iterator partition-iterator-2 partition-iterator-clumsy partition-repeats partition.pl partitions permute permute-flatten-imap.pl permute-flop permute-n powerset-0 powerset-1 powerset-2 powerset-3 powerset-4 powerset_recurse0 powerset_recurse1 powerset_recurse2 powerset_recurse3 powerset_recurse4 PowSeries.pm profile promote-if promote-if-curr promote_if promote_if_curr promote_if_curried
Q query-composable
R rdconfig-default rdconfig-tablearg rdconfig-tabular rdconfig-tagarg rdconfig-uparam read_config_default read_config_tablearg read_config_tabular read_config_tagarg read_config_userparam records records-string-terminated reduce regex-g-demo regex-parser Regex.pm RGB-CMYK RGB-CMYK-caching RGB_to_CMYK RGB_to_CMYK_caching rng-iterator.pl rpn-ifelse rpn-table rpn_ifelse rpn_table
S scale show-example-1 show-example-2 simple-expr-parser-2.pl simple-expr-parser.pl sine slope slope0 star Stream.pm
T T-continuation tokens tokens-1 tokens-calc tokens-callback tokens-regex total-size total-size-broken total_size total_size_broken Type.pm
U untag-html untag_html upto
V Value.pm
W walk-html walk-html-disp walk-html-uparam walk_html walk_html_dispatch walk_html_userparam Wire.pm

Browse

All code

Chapter 1 code
Chapter 2 code
Chapter 3 code
Chapter 4 code
Chapter 5 code
Chapter 6 code
Chapter 7 code
Chapter 8 code
Chapter 9 code

Download

TGZ file Zip file

License



Return to: Universe of Discourse main page | What's new page | Perl Paraphernalia | Higher-Order Perl

mjd-perl-hop+@plover.com