S

Simon Peyton Jones

simon.peytonjones.org · Personal blog · on HN since 2022

Simon Peyton Jones, a Haskell compiler researcher, hosts his papers, book, and advice on writing research papers and giving talks.

What HN saysHN commenters praise his advice on research papers and talks, and call his book on implementing functional languages one of their favorites.
29HN people shared it
15linked it in comments
14stories submitted
245story points
3 months agolast shared
2022people per year2026

Most-shared posts

  1. 1
  2. 2
  3. 3
    Slpj book 1987
    3 people · first shared 2024
  4. 4
  5. 5
  6. 6
    Slpj book 1987 2up searchable.pdf
    2 people · first shared 2024
  7. 7
    Build systems a la carte: theory and practice (2020)
    1 people · 102 points · first shared 2024 · 16 comments on HN
  8. 8
  9. 9
    Functional Abstract Interpretation
    1 people · 5 points · first shared 2025 · discussion on HN
  10. 10
    Build Systems à La Carte: Theory and Practice [pdf]
    1 people · 2 points · first shared 2024 · discussion on HN
  11. 11
    Great research paper
    1 people · first shared 2025
  12. 12
    Great research talk
    1 people · first shared 2024
  13. 13
    Haskell cloud
    1 people · first shared 2025
  14. 14
    Improving supercompilation
    1 people · first shared 2026
  15. 15
    Writing a proposal mar23.pdf
    1 people · first shared 2024

What HN people wrote when they linked it

mrkeen · 2025-07-06
ReleaseCandidat · 2024-07-01
> I think that depends on what you meany by "pattern matching" Oh, yes, that's true. "Pattern matching" as that what normally is used in "functional programming languages". This kind of pattern matching does not need unification. The IMHO best (correct, but understandable and with all needed definitions) explanation of it is in chapters 4 "STRUCTURED TYPES AND THE SEMANTICS OF PATTERN-MATCHING" and 5 "EFFICIENT COMPILATION OF PATTERN-MATCHING" of Peyton Jones et al., "The implementation of functional programming languages". https://simon.peytonjones.org/slpj-book-1987/ > In programming cirlces "pattern matching" usually means matching strings. Depends on the "circle" ;) https://en.wikipedia.org/wiki/Pattern_matching
fooker · 2024-04-22
This is a bit Haskell oriented, but the "Implementation of Functional Programming Languages" by SPJ is one of my all time favorite books. https://simon.peytonjones.org/slpj-book-1987/ These compilers were pulling heroic data structure optimization stunts in 1985, that no modern production compiler for major compiled languages can replicate in 2024.
ashton314 · 2024-04-14
The best advice I’ve ever seen for technical talks is from the indomitable Simon Peyton-Jones of Haskell IO Monad and C# LINQ fame: https://simon.peytonjones.org/great-research-talk/ He gives a fantastic meta-talk; you should listen to it.
hackyhacky · 2026-03-24
> they're losing money on vanity projects Among other vanity projects, they hired Simon Peyton Jones, long the most prominent developer of Haskell, to build "Verse", Tim Sweeney's hobby language [1]. I'm sure SPJ isn't that expensive, but still, it's pretty far from Epic's "core mission." [1] https://simon.peytonjones.org/verse-calculus/
i_don_t_know · 2026-03-07
Simon Peyton Jones's "The implementation of functional programming languages" has a chapter on the "Efficient compilation of pattern matching" (chapter 5 by Philip Wadler). https://simon.peytonjones.org/assets/pdfs/slpj-book-1987-2up-searchabl…
throwaway435235 · 2025-10-16
Reminds me of verse calculus [1] for Epic Games' Verse language. In there each expression has zero, one or many results that could be used further. [1]: https://simon.peytonjones.org/verse-calculus/
throwaway81523 · 2025-07-26
SPJ's book about the same topic is very good. https://simon.peytonjones.org/slpj-book-1987/
luizfelberti · 2025-02-05
Computation model behind this vaguely reminds me of the Epic Games programming model thing for Verse Calculus: https://simon.peytonjones.org/verse-calculus/
cosmic_quanta · 2025-01-14
> The Misty Programming Language is a dynamic, (...), secure, distributed actor language In this day-and-age, dynamic programs should be considered insecure (in the broad sense) by design. There have been lots of efforts in the past ~15 years to make distributed systems more robust (e.g. Cloud Haskell [0], choreographic programming [1]). The term "secure" as used here is quite specific, used in reference to a capability model. This is quite nice and innovative. However, static typing and capabilities need not be mutually exclusive: capabilities can be modeled at the type level using algebraic effects [2]. [0]: https://simon.peytonjones.org/haskell-cloud/ [1]: https://en.wikipedia.org/wiki/Choreographic_programming [2]: https://github.com/yallop/effects-bibliography
disconcision · 2022-12-12
exact semantics are given here: https://simon.peytonjones.org/assets/pdfs/verse-conf.pdf. runtime efficiency isn't specifically addressed afaict
mncharity · 2022-12-11
thesz · 2026-08-03
> Can you expand on your understanding of GRIN doing parts of supercompilation? GRIN, if I am not mistaken, performs partial evaluation. For example, it constrains, for each eval site, a set of tags and set of heaps allocations an eval site can receive. This is close to a partial evaluation step of a supercompilation. GRIN does not perform unification, though, it is not described in the original thesis, but data flow graph matching would be close to unification, reducing code size. > The downsides should be obvious: execution traces rapidly grow massive, compilation resources grow superlinearly, and there are many cases in which the result is worse than the original. This can be constrained. Supercompilation usually gets ran to a fixed point, where no partial evaluation steps can be performed that are not unifiable with previously encountered evaluation steps. But supercompilation can be stopped at any point. I believe you can read on that in Simon Peyton-Jones works, I am unable to find a link to that paper right now, I have troubles with the internet connection. EDIT: here it is: https://simon.peytonjones.org/improving-supercompilation/ EDIT: Note "tag-bags," it rhymes with the tag sets of GRIN. > What value would Fuse get from equivalence of terms, do you think? I think that equivalence of terms is an efficient way to verify properties of programs. Myself, I am looking at consensus protocol implementation verification.
duckqlz · 2023-03-30
Coming from the paper on Verse Calculus and having watched Simon Peytonjones’ talk last year I was super excited to try Verse in UEFN last week. Much to my dismay instead of a rich functional language I was met with something that looked like a DSL with python inspired syntax. As I played with the language I couldn’t stop thinking about “choice” and the other feature of verseMax I felt I was missing out on but after making a few toy maps I realized that epic had released a language entirely meant for the public. Reading Verse can be accomplished by anyone who can write a python for loop. The language is VERY accessible. From the comments below I can see a lot of people are turned away by the idea of FP and this language was clearly meant to address those concerns. The type system is interesting from a high level view but for non-coders I can see how it would make sense. For instance writing `if var = int` looks perfectly reasonable for someone who has never programmed before and it just works in verse. So all in all while I was upset on a personal level at what Epic has released, I hope it is a stepping stone to their overall goal of verseMax. Furthermore I am excited at the idea of millions of people (kids) learning functional programming as their first language and think this iteration of verse may just be the perfect gateway drug. [1] https://m.youtube.com/watch?v=832JF1o7Ck8 [2] https://simon.peytonjones.org/assets/pdfs/verse-conf.pdf [3]…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close