Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    On the Expressive Power of Programming Languages by Shriram Krishnamurthi [PWLConf 2019]

    PapersWeLove

    5 HN recommenders · recommended in 9 months, 2020–2026

    YouTube

    59:04 · 27K views · Sep 19, 2019

    Shriram Krishnamurthi's PWLConf 2019 talk on the formal notion of expressive power of programming languages, based on Felleisen's paper. It explains how to tell when a feature adds power by whether emulating it requires global rewriting.

    Recommended as the approachable way into a precise definition of language expressiveness for language-design arguments.

    Software Engineering & LanguagesProgramming language designFunctional programming
    1. 1:03:29
      Maybe Not - Rich HickeyClojureTV181K views • 7 years ago
    2. 1:14:52
      Effective Programs - 10 Years of Clojure - Rich HickeyClojureTV176K views • 9 years ago
    3. 1:07:22
      Invited Talk - Guy SteeleClojureTV39K views • 9 years ago
    4. 1:03:31
      Brian Goetz - Stewardship: the Sobering PartsClojureTV39K views • 11 years ago
    5. 42:43
      "Propositions as Types" by Philip WadlerStrange Loop Conference144K views • 11 years ago
    6. 1:42:53
      Edward Kmett - Type Classes vs. the WorldBoston Haskell36K views • 11 years ago
    7. 46:09
      Why Isn't Functional Programming the Norm? – Richard FeldmanMetosin1.6M views • 7 years ago
    8. 12:56
      Stephen Wolfram's Introduction to the Wolfram LanguageWolfram924K views • 12 years ago
    9. 1:28:59
      Psp collections: views and more by Paul PhillipsAI Council11K views • 12 years ago
    10. 44:43
      Ron Pressler - Pull Push: Please stop polluting our imperative languages with pure concepts-Curry OnCurry On!25K views • 11 years ago
    11. 59:03
      Breaking Down Programming Paradigms: APL's Surprising Learning Curve // Aaron Hsu // Dyalog '17Dyalog User Meetings7.2K views • 9 years ago
    12. 34:55
      "Outperforming Imperative with Pure Functional Languages" by Richard FeldmanStrange Loop Conference98K views • 5 years ago
    13. 1:03:34
      Simon Peyton Jones - Linear Haskell: practical linearity in a higher-order polymorphic languageCurry On!19K views • 8 years ago
    14. 53:22
      Ruby Conf 12 - Y Not- Adventures in Functional Programming by Jim WeirichConfreaks66K views • 13 years ago
    15. 45:03
      Keynote: The Last Hope for Scala's Infinity War - John A. De GoesScalapeño36K views • 8 years ago
    16. 1:04:16
      Simon Peyton-Jones: Escape from the ivory tower: the Haskell journeyChurchill College, University of Cambridge170K views • 9 years ago
    17. 1:11:42
      ElixirConf 2023 - José Valim - The foundations of the Elixir type systemElixirConf38K views • 3 years ago
    18. 56:58
      Philip Wadler - Propositions as Types (Lambda Days 2016)Erlang Solutions20K views • 10 years ago
    19. 1:12:10
      Practical Common LispGoogle TechTalks98K views • 19 years ago
    20. 33:13
      "Pixie - A Lightweight Lisp with 'Magical' Powers" by Timothy BaldridgeStrange Loop Conference30K views • 11 years ago

    9 comments from Hacker News

    1. @TwisolAug 2021· in “All you need is call/cc (2013)”

      Certainly adding call/cc doesn't allow you to represent more computable functions by programs. But there are plenty of internal features of programs that we're interested in, that let us meaningfully distinguish amongst programs that otherwise have the exact same observable behavior. I like coroutines as an example here, because I have very direct experience writing programs with similar behavior in systems that either do or do not have coroutines. By far, I found the coroutine-based programs far easier to understand and extend. Mattias Felleisen wrote the seminal paper on comparing expressive power of Turing-complete languages. It's worth a read if it's not come across your radar before! [LINK] Although, Shriram Krishnamurthi's talk from two years ago on this paper might be more approachable. this video

      RecommendsView on HN
    2. @HirrolotMay 2024· in “Algebraic Data Types for C99”

      In programming language design, we tend to distinguish between global and local analysis. While type checking and elaboration is an example of global analysis, desugaring is inherently local to some piece of code. Therefore, "power" or "expressiveness" usually mean that something cannot be syntactically "expanded"; e.g., while type classes elaborate into explicit dictionaries, they still require information from the type checker, and therefore considered a "real" feature of a programming language. On the other hand, nested pattern matching can be formulated as local syntax transformation, and therefore it doesn't bring anything fundamentally new to the type system or dynamic semantics. There's also a great talk on the matter [1], if somebody is interested in formalities. [1] this video

      RecommendsView on HN
    3. @hayley-pattonAug 2026· in “Gödel, Escher, Elisp: The Beauty of Macros”

      > If macros can implement arbitrary language features Not really your question--others have provided examples of type systems as macros--but they can't, they can only do local rewrites. You couldn't, for example, express mutation or non-local control flow if you didn't have them already; On the expressive power of programming languages [0] is rather theoretical but does set out the boundary of what macros can and can't do. That they're local means everyone has to buy into your type system if you want it to be a macro, though. [0] [LINK] though this video might be a useful walkthrough of the ideas being presented

      RecommendsView on HN
    4. @fanf2May 2023· in “Is Go an object-oriented programming language?”

      Worth reading Felleisen’s paper “on the expressive power of programming languages” (or watch this talk this video ) which argues that if a language A has a feature that would require global refactoring to implement in language B, then A is more expressive than B.

      RecommendsView on HN
    5. @opnitroMar 2021· in “Rust's type system is Turing-complete (2017)”

      On this notion, a very good talk "On the expressive power of programming languages"[1][2] which attempts to provide a formal basis for distinguishing between expressive power of turning complete languages. [1] this video [2] The paper it's based on [LINK]

      RecommendsView on HN