Implementation of Non-Strict Functional Programming Languages

Overview

Modern "non-strict" functional programming languages are a powerful means of programming highly parallel computers, but are intrinsically difficult to compile well because decisions about ordering of subcomputations must be taken at compile time. This book represents a new technique for compiling such languages by partitioning a program into sequential threads. While the interleaving of threads can vary at run time, within each thread the order is fixed.

A program is compiled by...

See more details below
Available through our Marketplace sellers.
Other sellers (Paperback)
  • All (4) from $40.24   
  • New (1) from $389.33   
  • Used (3) from $40.24   
Close
Sort by
Page 1 of 1
Showing All
Note: Marketplace items are not eligible for any BN.com coupons and promotions
$389.33
Seller since 2008

Feedback rating:

(203)

Condition:

New — never opened or used in original packaging.

Like New — packaging may have been opened. A "Like New" item is suitable to give as a gift.

Very Good — may have minor signs of wear on packaging but item works perfectly and has no damage.

Good — item is in good condition but packaging may have signs of shelf wear/aging or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Acceptable — item is in working order but may show signs of wear such as scratches or torn packaging. All specific defects should be noted in the Comments section associated with each item.

Used — An item that has been opened and may show signs of wear. All specific defects should be noted in the Comments section associated with each item.

Refurbished — A used item that has been renewed or updated and verified to be in proper working condition. Not necessarily completed by the original manufacturer.

New

Ships from: Chicago, IL

Usually ships in 1-2 business days

  • Standard, 48 States
  • Standard (AK, HI)
Page 1 of 1
Showing All
Close
Sort by
Sending request ...

Overview

Modern "non-strict" functional programming languages are a powerful means of programming highly parallel computers, but are intrinsically difficult to compile well because decisions about ordering of subcomputations must be taken at compile time. This book represents a new technique for compiling such languages by partitioning a program into sequential threads. While the interleaving of threads can vary at run time, within each thread the order is fixed.

A program is compiled by analyzing its data dependences, and developing from that a set of partitioning constraints. These practical algorithms are founded on a new theory of data dependence and ordering within functional programs, which defines dependence graphs in terms of a rewrite-rule operational semantics for the language.

By attacking the ordering problem directly, the book departs from previous approaches that obtain partitioning as a byproduct of optimizing lazy evaluation, and cleanly separates partitioning from other code generation issues. Furthermore, the method is flexible enough to produce both lazy code and also a less restrictive "lenient" variant which allows larger threads with only a slight decrease in expressive power. Code generation and optimization are explored in depth for both uniprocessor and multiprocessor targets.

Kenneth R. Traub is a researcher with the Motorola Cambridge Research Center.

Contents: Introduction. Background - Functional Language Compilers. Lenient Evaluation. Functional Quads. Code Generation. A Syntactic Theory of Data Dependence. Dependence-Based Partitioning. Conclusion.

Read More Show Less

Editorial Reviews

Booknews
In this revision of his doctoral thesis (MIT), Traub presents an alternative compilation strategy which deals with non-strictness independent of laziness, through the analysis of data dependence. The analysis determines which instructions can be ordered at compile time and which must be scheduled at run time in order to properly implement non-strictness. The strategy is discussed in the context of both sequential implementations and parallel implementations where the object code is partially sequentialized. Annotation c. Book News, Inc., Portland, OR (booknews.com)
Read More Show Less

Product Details

Table of Contents

1 Introduction
1.1 Notation: Functional Programs
1.2 Notation: Sets, Relations, and Graphs
2 Background - Functional Language Compilers
2.1 Strict Compilers
2.2 Lazy Compilers: Force-and-Delay
2.3 Lazy Compilers: Graph Reduction
2.4 Lazy Compilers: Abstract Machines
2.5 Strictness Analysis
3 Lenient Evaluation
3.1 Expressive Power from Non-Strictness
3.2 Expressive Power from Laziness
3.3 Lenience: Non-strictness Without Laziness
3.4 Semantics or Implementation Technique?
3.5 Compilation as Ordering: Sequential Threads
3.6 Code Generation Options
3.7 A Footnote: Non-Sequentiality
4 Functional Quads
4.1 Syntax
4.2 Semantics
4.3 Additional Functional Quads Examples
4.4 From a Functional Language to Functional Quads
4.5 Functional Quads vs. Sequential Quads
4.6 Mathematical Properties of Reduction
4.7 Termination, Weak Normal Forms, and Lazy Evaluation
4.8 Substitutions, Contexts, and newid
4.9 Appendix: The Structure of the Set Identifier
5 Code Generation
5.1 Code Generation Concepts
5.2 Basic Code Generation
5.3 Optimizations
5.4 Implementing Tagged Locations
5.5 Partitiong for Uniprocessor Demand-Driven Execution
5.6 Partitioning Heuristics
5.7 Partitioning via Coalescing
6 A Syntactic Theory of Data Dependence
6.1 Required Reductions
6.2 Program Requirement Graphs
6.3 Program Dependence Graphs
6.4 Function Dependence Graphs
7 Dependence Analysis
7.1 Introduction: Examples of Function Dependence Graphs
7.2 Identity Statements and Arithmetic, Outside Conditionals
7.3 Conditionals
7.4 First-Order FunctionCalls
7.5 Formal Parameters, Free Variables, and the Result
7.6 Summary of Dependence Analysis for Scalar Programs
7.7 Data Structures
7.8 Higher-Order Functions
7.9 Appendix: Proof of the "Collapsing" Lemma
8 Constraint Computation and Partitioning
8.1 Threads, Partitioning, and Correctness
8.2 Partitioning Using Constraint Graphs
8.3 Efficient Partitioning Algorithms
8.4 Improving the Constraint Graphs - Eliminating Inadmissible Edges
8.5 Strict Regions
8.6 Lazy Evaluation
8.7 Feedback Dependences Revisited
8.8 Appendix: NP-completeness of Finding Admissible Paths in DF
9 Conclusion
9.1 Relationship to Other Work
9.2 Directions for Future Research
9.3 Concluding Remarks
Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star

(0)

4 Star

(0)

3 Star

(0)

2 Star

(0)

1 Star

(0)

Your Rating:

Your Name: Create a Pen Name or

Barnes & Noble.com Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & Noble.com that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & Noble.com does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at BN.com or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation

Reminder:

  • - By submitting a review, you grant to Barnes & Noble.com and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Noble.com Terms of Use.
  • - Barnes & Noble.com reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & Noble.com also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on BN.com. It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

 
Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)