CDN$ 114.95
Temporarily out of stock.
Order now and we'll deliver when available. We'll e-mail you with an estimated delivery date as soon as we have more information. Your account will only be charged when we ship the item.
Ships from and sold by Amazon.ca. Gift-wrap available.
Quantity:1
Compiling with Continuati... has been added to your Cart
Have one to sell?
Flip to back Flip to front
Listen Playing... Paused   You're listening to a sample of the Audible audio edition.
Learn more
See all 3 images

Compiling with Continuations Paperback – Feb 12 2007

4.5 out of 5 stars 2 customer reviews

See all 3 formats and editions Hide other formats and editions
Amazon Price
New from Used from
Kindle Edition
"Please retry"
Paperback
"Please retry"
CDN$ 114.95
CDN$ 114.95 CDN$ 85.93

Save an Additional 10% on Textbooks When you Join Amazon Student

Special Offers and Product Promotions

  • Amazon Student members save an additional 10% on Textbooks with promo code TEXTBOOK10. Enter code TEXTBOOK10 at checkout. Here's how (restrictions apply)

No Kindle device required. Download one of the Free Kindle apps to start reading Kindle books on your smartphone, tablet, and computer.

  • Apple
  • Android
  • Windows Phone
  • Android

To get the free app, enter your e-mail address or mobile phone number.




Product Details

  • Paperback: 272 pages
  • Publisher: Cambridge University Press; 1 edition (Feb. 12 2007)
  • Language: English
  • ISBN-10: 052103311X
  • ISBN-13: 978-0521033114
  • Product Dimensions: 17.4 x 1.5 x 24.7 cm
  • Shipping Weight: 558 g
  • Average Customer Review: 4.5 out of 5 stars 2 customer reviews
  • Amazon Bestsellers Rank: #1,516,819 in Books (See Top 100 in Books)
  •  Would you like to update product info, give feedback on images, or tell us about a lower price?

  • See Complete Table of Contents

Product Description

Review

"I recommend the book to language designers and implementors specializing in the functional paradigm." F.G. Pagan, Computing Reviews

Book Description

This book shows how continuation-passing style is used as an intermediate representation on which to perform optimisations and program transformations. It will be essential reading for compiler writers in both industry and academe, as well as for students and researchers in programming language theory.


Inside This Book

(Learn More)
Explore More
Concordance
Browse Sample Pages
Front Cover | Copyright | Table of Contents | Excerpt | Index
Search inside this book:

Customer Reviews

4.5 out of 5 stars
5 star
1
4 star
1
3 star
0
2 star
0
1 star
0
See both customer reviews
Share your thoughts with other customers

Top Customer Reviews

Format: Hardcover
This is a very nice little book, and I found it to be surprisingly readable. The book is nicely written. Standard ML is used to illustrate the technique of compiling a functional language using continuations as the primary intermediate representation. Lack of familiarity with ML is not particularly burdensome. I would like to have seen more discussion of other languages, though (Scheme?).
Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again.
Report abuse
Format: Paperback Verified Purchase
One big insight I got from this book was the correspondence between continuation passing style and machine instructions. Once a program is converted to CPS without free variables, the result is a kind of low-level code where the parameters correspond to the fields of the machine instructions of the primitive operations allowed in CPS - including a parameter for what the address of the next instruction should be. Of course, CPU instruction sets don't specify the next program counter with every instruction, but it's an interesting way of looking at it.
Was this review helpful to you? Yes No Sending feedback...
Thank you for your feedback.
Sorry, we failed to record your vote. Please try again.
Report abuse

Most Helpful Customer Reviews on Amazon.com (beta)

Amazon.com: HASH(0xa9fa248c) out of 5 stars 6 reviews
21 of 21 people found the following review helpful
HASH(0xa9fde024) out of 5 stars Surprisingly readable, given the subject matter. June 18 1999
By A Customer - Published on Amazon.com
Format: Hardcover
This is a very nice little book, and I found it to be surprisingly readable. The book is nicely written. Standard ML is used to illustrate the technique of compiling a functional language using continuations as the primary intermediate representation. Lack of familiarity with ML is not particularly burdensome. I would like to have seen more discussion of other languages, though (Scheme?).
13 of 13 people found the following review helpful
HASH(0xa9fde48c) out of 5 stars This book changed my life Nov. 2 2008
By Matthew Fuchs - Published on Amazon.com
Format: Paperback
I found this book while trying to build a interpreter for a distributed language. Appel's approach not only solved my immediate issues (a uniform means of procedure call in the presence of mobility) but opened my mind to the utility of continuations in many areas of CS. It was a real mind opener, and the explanations were clear enough that I could adopt this approach with little difficulty.
9 of 9 people found the following review helpful
HASH(0xa9fde4b0) out of 5 stars Surprisingly relevant given its age June 20 2011
By Brian L. - Published on Amazon.com
Format: Paperback Verified Purchase
This book was fantastic. It opened my mind to a different mindset towards the compilation process while at the same time demystifying many concepts that I had previously only partially understood.

It is clear, concise, well-written, and unusually approachable for its genre. That said, I recommend some familiarity with ML-family languages as a prerequisite for approaching the book. He does include an appendix that's supposed to explain ML, but there are plenty of subtleties that I would have easily missed if that were my only resource.

This book doesn't discuss the front end of the compiler at all--there is no discussion of lexical analysis, parsing or type inference. If that's what you're after, look elsewhere. This is text is limited to the back end of the compiler.

The biggest quibble that I have with it is that the code generation chapter used MIPS/MAX/SPARC/68020 for case studies. In today's climate, ARM/x86/LLVM would be far more relevant and practical. This is an unfortunate consequence of the age of the text.
3 of 3 people found the following review helpful
HASH(0xa9fde498) out of 5 stars Still the best book for people implementing a strongly-typed functional language June 2 2011
By Lars Bergstrom - Published on Amazon.com
Format: Hardcover Verified Purchase
After all these years, this book remains the best source for anyone implementing a strongly-typed functional language. Providing an excellent introduction to all of the basic transformations (CPS), optimizations (contraction, CSE, call site optimization, etc.), and basic compilation techniques (closure conversion, etc.), this book holds everything you need to go from an initial AST to generating x86 code.

Naturally, it would be nice to have an update that touches on control-flow analysis-based optimizations or provides more detailed backend examples using MLRISC or LLVM. But for the time it was written, this book has stood up remarkably well.
2 of 2 people found the following review helpful
HASH(0xa9fde564) out of 5 stars Great source for general understanding of continuations and closures Dec 19 2015
By Brian Beckman - Published on Amazon.com
Format: Paperback
Read this book if you wish to understand continuations. It's the first source I've seen that emphasizes that continuations are not functions in the ordinary sense even though they look like functions, syntactically. If you only read papers and books that "sugar" continuations by calling them functions, you will never understand them because your intuitions about function calling will mislead you and you will find only paradoxes. You can only implement continuations if you have tail-call optimization (TCO). That's their little secret and that's why papers about them written by Schemers don't go out of their way to explain that they aren't ordinary functions. In Scheme, they ARE ordinary functions because Scheme requires TCO. But you will go mad trying to implement them or even trying to imagine how to implement them in most other programming languages. Continuations don't return and they don't push stack frames when you call them. They're more like a fixuppable goto with an environment containing assignments of value to variables. And that segue's to my second recommendation:

Read this book if you want to understand closures.


Feedback