Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
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
    O

    Oleg Kiselyov

    okmij.org · Personal blog · on HN since 2007

    Oleg Kiselyov's site hosts papers and notes on functional programming, type systems, effects, macros, and OCaml and Scheme.

    Visit blogHN submissions
    Languages & CompilersProgramming
    What HN says

    HN commenters call his papers brilliant and insightful, praise his clear writing, and cite his notes on OCaml generalization and tagless-final interpreters.

    Stats for nerds
    251HN people shared it
    118linked in comments
    2.8Kstory points
    Nov 2025last shared
    2010people per year2025

    Top posts on HN

    1. 1
      How the OCaml type checker works (2022)
      11 people · 326 points · first shared 2013 · 42 comments on HN
    2. 2
      A dream of an ultimate OS (1995)
      4 people · 257 points · first shared 2019 · 175 comments on HN
    3. 3
      Monads in Scheme
      3 people · 156 points · first shared 2011 · 15 comments on HN
    4. 4
      Compilers: Incrementally and Extensibly (2024)
      1 person · 143 points · first shared 2025 · 44 comments on HN
    5. 5
      Higher-kinded bounded polymorphism in OCaml (2021)
      1 person · 141 points · first shared 2024 · 10 comments on HN
    6. 6
      Monadic I/O and Unix shell programming (2001)
      14 people · 136 points · first shared 2007 · 10 comments on HN
    7. 7
      Implementing and Understanding Type Classes (2014)
      7 people · 121 points · first shared 2015 · 26 comments on HN
    8. 8
      Rethinking Prolog [pdf]
      4 people · 113 points · first shared 2014 · 34 comments on HN
    9. 9
      I'm not sure who this Oleg person is, but he sure has some cool links on his site.
      20 people · 108 points · first shared 2008 · 6 comments on HN
    10. 10
      Freer Monads, More Extensible Effects (2015) [pdf]
      11 people · 98 points · first shared 2015 · 30 comments on HN

    What HN people wrote when they linked it

    • tathougiesFeb 2018

      Sure... most people familiar with zippers know that it can be thought of as the algebraic derivative the underlying type.

      What’s perhaps less known is that this is the same as ‘differentiating’ the traversal of the data type.

      The continuation monad is a sort of ‘derivative’ of a computation in that it nearly captures the ‘infinitesmal’ difference between two steps in a computation.

      If your computation is the traversal of your tree, list, or text markup, then you can make a zipper from that without having to declare new data structures. This is isomorphic to declaring your own data structure. Its only advantage is convenience (that I know of at least).

      Oleg Kiselyov goes into great detail with this idea and has lots of example code: http://okmij.org/ftp/continuations/zipper.html

    • catnaroekJul 2016

      This is a nice introductory tutorial on how to implement Hindley-Milner type inference: https://github.com/jozefg/hm

      This is a more advanced tutorial that illustrates a nice but tricky optimization that OCaml's type checker internally uses: http://okmij.org/ftp/ML/generalization.html

      Finally, TAPL's type checkers are pretty good. They aren't designed for efficiency, though. They're designed to closely follow the book's contents: http://www.cis.upenn.edu/~bcpierce/tapl/checkers/

    • naaskingJul 2025

      This looks like a reinvention of the final, tagless interpreter, which has been a great, common technique in functional languages for awhile:

      https://okmij.org/ftp/tagless-final/index.html#tagless-final

      It's an interpreter though, not a JIT. This kind of programming language thing is a bit of a hobby horse of mine, so see the comment I just posted on this for full details:

      https://codereview.stackexchange.com/questions/259045/poor-mans-jit-using-nested-lambdas/297544#297544

    • pcwaltonJan 2013

      Using blocks for looping (i.e. using callbacks) is actually a great feature. See Oleg Kiselyov's spirited defense of callbacks (as opposed to iterator objects) here: http://okmij.org/ftp/papers/LL3-collections-enumerators.txt

      The fact that `break`, `next`, and `return` work the way they do in blocks is a remarkable simplification; it turns a set of constructs that work only on loops into functional constructs that work on functions, broadening their usefulness.

    • tomeFeb 2020

      I don't believe that continuations are a corner of programming language theory that is well-loved and and well-understood by programmers at large, are they? Even amongst experienced functional programmers they seem to be thought of as rather difficult. Oleg Kiselyov has written extensively on them but his work has not been brought to the masses in the same way that his work in iteratees has.

      http://okmij.org/ftp/continuations/index.html

    • soegaardDec 2023

      > 2. Turing complete macros (not just syntax-case)

      I assume, you mean `syntax-rules` here.

      If I understand correctly, it's pretty easy to simulate a paper tape
      with `syntax-rules` macro - that is `syntax-rules` macros are already
      "Turing complete".

      https://okmij.org/ftp/Scheme/macros.html#turing-completeness-hygiene

      But ... I know what you mean - in practise `syntax-case` or `syntax-parse` would be lovely to have.

    Related

    Existential Typeexistentialtype.wordpress.com157 people

    Haskell Is Exceptionally Unsafe (2012)

    Existential Type
    Personal · last shared 2026
    Andrej Bauermath.andrej.com114 people

    Seemingly impossible functional programs (2007)

    Andrej Bauer
    Personal · last shared 2026
    Programming Musingsprogramming-musings.org16 people

    SICP distilled (2009)

    Programming Musings
    Personal · last shared 2013
    Justin Leblog.jle.im36 people

    Typesafe Neural Networks in Haskell with Dependent Types

    Justin Le
    Personal · last shared 2026
    Jon Sterlingjozefg.bitbucket.org19 people

    Leaving Go

    Jon Sterling
    Personal · last shared 2016
    Well-Typed Blogwell-typed.com60 people

    Falsify: Hypothesis-Inspired Shrinking for Haskell (2023)

    Well-Typed Blog
    Company · last shared 2026
    Yogthosyogthos.net45 people

    Why I'm Productive in Clojure (2013)

    Yogthos
    Personal · last shared 2026
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025