9 ms·
The Implementation of Functional Programming Languages (1987)
- 5outh 11y agoThis looks pretty promising from the table of contents! It was also written by one of the main authors of GHC, the most widely-used Haskell compiler.
- e19293001 11y agoAlthough this is quite an old book, the topic is still very relevant even today. The ideas are timeless and worth reading. I'm impressed by the authors that made their books survive in a very long time.
- deleted 11y ago[deleted]
- brudgers 11y agoThe Prentice-Hall Series in Computer Science has a lot of timeless content. C.A.R. Hoare was an outstanding editor.
- diggan 11y agoAnyone got this in EPUB format?
- jamiek88 11y agoCalibre is free and converts easily between all the major formats, I use it on OS X. Just FYI, I know I was glad to have it linked to me when I asked a similar question a few months ago.
- e12e 11y agoFwiw the djvu-version might be easier to convert than the pdf version. It also renders ok on my phone with the djvu-plugin for fbreader (android).
- ape4 11y agoI would think that, while tempting, you'd want to avoid recursion in your implementation.
- eudox 11y agoWhy?
- ape4 11y agoI'm not an expert... but you don't want your C/C++ code stack overflowing or running out of memory in an uncontrolled way. Your C/C++ can do graph reduction by working on a structure in a loop. Then you'll be able to better monitor resources.
- eudox 11y agoEh, clarity of code is more important, in my opinion. If you run out of stack, get a better computer.
- johncolanduoni 11y agoStack doesn't generally scale up with RAM. GCC and Clang can both do some tail call optimization, and I find rewriting code to use an accumulator isn't very hard on the eyes.
- gohrt 11y agos/computer/compiler/
- bglusman 11y agoThis is why TCO (Tail call optimization) exists... but of course not all recusion is tail recursion, but I think it can always be written this way, and should always be for arbitrary depth recursion.
- gohrt 11y ago
- djfm 11y agoI've read (part of) this book and used it to implement a toy compiler. It helped me a lot in getting a better understanding of Haskell and other functional languages. This is really an amazing book, well worth investing some time into. It starts from simple definitions and concepts and builds up on them - very easy to follow even with little to no previous knowledge of the field.
- krat0sprakhar 11y agoI'm on a mobile device so can't view the book. Is familiarity with Haskell is one of the prerequisites to follow this? Thanks!
- mitchty 11y agoIt wouldn't hurt, but given this paper predates Haskell by 3 years I think you're safe. Would be more a history lesson of what eventually led to Haskell. IIRC Miranda might be a more apt comparison.
- weeksie 11y agoMe too. Wrote a toy language partially referring to this back in '06. I still look back on that time fondly. It was one of those periods in my career where I was learning so many new concepts at once and it all felt like play. Much of my professional life really does feel like play still, but that was a sort of golden age. Ahh, memories.
- deleted 11y ago[deleted]
- dasil003 11y ago1987 was the year I first got access to Usenet (via FidoNet). It's interesting to think how long it would take to download a 30MB book at the time. Of course it would have been considerably smaller since it would have probably been a text file or perhaps LaTeX. When a CS book is relevant this long, I feel like these kind of ruminations put me in the right headspace to receive it.
- iheartmemcache 11y agoThat was right around the time that T1 drops were coming to hospitals and universities (my father was faculty at Harvard/BIDMC at the time). In the latter part of the '87s I was still a few embryonic cells, but as a true nerd, I'd barrage my fathers colleagues with questions about technology and infrastructure in my teenage years. This was the era of UUCP and .TeX files, with a bit of PS here and there (for final presentation; not for transfer). A few years later, Gopher would have been the prime medium of exchange before the NCSA implementation of HTTP went around like wildfire. Side-note: I was listening to an interview with an EE who drafted textbooks at (I want to say, though I might be wrong) UC Berkeley during the 70s. He mentioned the reason why his original first few editions had no diagrams was because getting access to the resource (they only had one resource on staff for the dept for this purpose) to assist in typesetting was so hard, you'd have months, sometimes years of wait-time. I wish I still had contact with the greybeards who were publishing then of my fathers generation to ask them what the procedure was when they would submit papers for publication and/or press. Edit: https://www.academia.edu/13067316/T1_Historical_Timeline_of_the_Internet https://www.academia.edu/13067316/T1_Historical_Timeline_of_... So presumably that NSFnet timeline (~1986) is when you had academics gaining access to static routed internet, ARIN giving out netblock allocations, etc. I'd imagine post-docs and grad students fighting over VAX/VMS time like modern day post-docs battle over NMR access these days.
- vanderZwan 11y agoWell, there's a perfectly fine 6MB djvu file - only one fifth the infinite download time!
- Maken 11y ago
- amelius 11y agoThis is an amazing book. We need more people with writing capabilities like SPJ. Reading this book is almost like inventing compilers for lazy functional languages yourself. There really is no substitute other than actually doing it yourself.
- jaseemabid 11y agoBryan O'Sullivan (Haskell, Facebook) mentioned in a talk that he got into the whole Haskell ecosystem while interning for Simon P.J. (the author of this book) and this book helped him get started back then.
- webreac 11y agoI am very suprised to see the association of the word microsoft, 1987 and functional programming. As far as I remember, Simon Peyton Jones research (and this book) has made him famous. I was very sad that such a talent was hired by the "devil" microsoft. That is old story. He has managed to do great things inside Microsoft and since the departure of Balmer, my opinion about Microsoft is a lot more balanced. The association seems an anachronism.
- thinkpad20 11y agoMicrosoft has been very involved in the development of Haskell for quite a while now, and functional languages in general, with projects like F# and F*. Several of the big names in the Haskell community work or have worked for MSR.
- hcarvalhoalves 11y agoOnce you get to the final chapters, where an intermediate representation of lambda calculus is presented (G-code), read this accompanying paper [1] and wonder where we could be now if the market and hardware manufacturers took a π degree turn to fully support functional paradigms. [1] https://www.doc.ic.ac.uk/~wl/icprojects/papers/reduceron08.pdf https://www.doc.ic.ac.uk/~wl/icprojects/papers/reduceron08.p...
- damianknz 11y agoIf you've done some Scheme (or Lisp (or Haskell (or Curry))) then you will find this very readable. Section 2.4 has a good explanation of the Y combinator. I'm going to try and get through the whole book.
- insejniasty 11y agoHere's an implementation of a toy compiler targeting LLVM (with very basic Erlang interop), which was created with the help of that book: https://github.com/pkaleta/kivi https://github.com/pkaleta/kivi