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
    R

    Raphael Poss

    science.raphael.poss.name · Personal blog · on HN since 2014

    Raphael Poss writes technical posts on Rust, Go, Haskell, OCaml, category theory, and low-level performance measurements.

    Visit blogHN submissions
    Languages & CompilersProgrammingMath
    What HN says

    HN commenters cite his Rust-for-functional-programmers article in debates over whether Rust is functional, and praise his category theory primer.

    Stats for nerds
    34HN people shared it
    23linked in comments
    446story points
    Jan 2020last shared
    2014people per year2020

    Top posts on HN

    1. 1
      Rust for functional programmers
      15 people · 208 points · first shared 2014 · 52 comments on HN
    2. 2
      Size visualization of Go executables using D3
      2 people · 125 points · first shared 2019 · 53 comments on HN
    3. 3
      Haskell for OCaml programmers
      4 people · 59 points · first shared 2014 · 13 comments on HN
    4. 4
      How Good Are You At Programming
      5 people · 28 points · first shared 2014 · 30 comments on HN
    5. 5
      Measuring multiple return values in Go and C++
      3 people · 9 points · first shared 2018 · Discussion on HN
    6. 6
      The Go low-level calling convention on x86-64
      5 people · 6 points · first shared 2018 · Discussion on HN
    7. 7
      The Dark Resistance
      1 person · 6 points · first shared 2014 · Discussion on HN
    8. 8
      Measuring errors vs. exceptions in Go and C++
      1 person · 2 points · first shared 2018 · Discussion on HN
    9. 9
      Open Problems in Computer Science
      1 person · 1 points · first shared 2014 · Discussion on HN
    10. 10
      Finding the right tool for the job – FAIL
      1 person · 1 points · first shared 2014 · Discussion on HN

    What HN people wrote when they linked it

    • vegabookFeb 2017

      As a scientific programmer interested in functional-flavoured (ie undogmatic) languages, I would do Rust immediately if it had a REPL. Dying to dump Python. This post is very convincing on Rust's design decisions:

      http://science.raphael.poss.name/rust-for-functional-programmers.html

      This post was a total revelation to me, even if I assume it's well known in the community, because it is very credible on the Sophie's Choice issue of mathematical purity versus acknowledgement of the reality of the instruction pointer-based imperative machine that exists underneath.

      I've looked at other languages that "do" multiprocessing recently. Go is great, but it's essentially about getting large teams of variable-skill people to work together well. It's not an inspiring language, whereas Rust clearly is. Erlang (via Elixir) is very interesting, but the actor model will never be as performant in reality as the shared memory architecture. Julia is just a modern interpretation of matlab. A number of the JVM languages are great, but the "culture" of that ecosystem will always be corporate.

      This is why I believe the science crowd could really gravitate to Rust, because it may have the ability, like the functional crowd, to satisfy the "search for beauty" aspect which motivates many academics, scientists, and indeed, programmers, all the while staying just the right side of pragmatism. And clearly targeting "where the puck is going" on massively multicore hardware.

      The trial-and-error…

    • dbauppSep 2014

      I think the situation of your [1] is that Rust has ended up close enough to C++ that it's useful and meaningful to provide a translation guide between concepts, to help C++ programmers get up to speed more easily; it's certainly not a design document or anything like that. Maybe I'm missing your point. (As I said elsewhere, C++ has had a lot of experience in this space, and so has a lot of good ideas, Rust is not ashamed to borrow them.)

      On that note, would you interpret [a] as meaning Rust is trying to be a functional language? The reality is more plagiaristic: functional language have nice features and so Rust borrows some of them. (In my mind the correct interpretation of both documents would be: Rust is a mesh of various languages with enough similarity to many for translation guides to be helpful.)

      There has been syntactic decisions tilting towards C++/Java/C# programmers (like the <> for generics), but as far as I can remember those sort of decisions are all minor in terms of semantics. For the most part the actual semantic behaviours are considered in terms of "does Rust need this" rather than "will this move us more towards C++" (even if the feature was inspired by C++).

      [a]: http://science.raphael.poss.name/rust-for-functional-programmers.html

    • st1ckJun 2018

      I spent around 30 minutes reading "Rust for functional programmers" [1] to get overall perspective and then around 3 hours more reading selected chapters from "The Book" [2] about borrowing, lifetimes etc.

      Then I managed to write a simple program which reads a password from stdin, applies scrypt KDF to it and prints the result in hex encoding. It took me less than 2 hours. Mostly I just tried to do something, and when it didn't work, I'd find a solution for my problem on stackoverflow or r/rust. Compiler error messages were also quite helpful.

      So I managed to write a useful (for me) simple CLI application in 1 day. The next day I added option processing (salt, scrypt parameters), split the code into functions etc. I didn't encounter any problem which I couldn't solve in under 1 hour. The biggest struggle was trying to return a reference to local variable from function, and it was covered in [3].

      TLDR: don't try to master the language, just give it a try for a few days, writing a simple program.

      [1] http://science.raphael.poss.name/rust-for-functional-programmers.html

      [2] https://doc.rust-lang.org/book/

      [3] https://bryce.fisher-fleig.org/blog/strategies-for-returning-references-in-rust/index.html

    • ycmbntrthrwawayJan 2017

      > It seems like everything I know about structuring a program goes out the window when borrowing comes into the picture.

      Try to avoid structured programming and mutable state where possible. Apply functional programming idioms and use immutable data structures if you can. Rust adopts many features from functional programming languages: http://science.raphael.poss.name/rust-for-functional-programmers.html

      Borrow checker will interfere only when you are trying to manage mutable state that is hard to reason about. If you absolutely must keep some mutable data structure around, you can fall back to unsafe code. There is nothing wrong with it, but make sure to put all unsafe code into separate module and provide only safe interface, that is absolutely unbreakable no matter how you use its public API.

      Make sure you know about this module: https://doc.rust-lang.org/std/mem/ It is nearly impossible to create complex data structures without it, even linked list implementation requires it. Learn to use replace, swap and .take(). These functions provide great example of a safe API for unsafe operations.

    • klibertpJun 2015

      > and you wouldn't use it in your code

      Speak for yourself. I don't see any value in not using a tool when it's available and seems to do the job:

      http://science.raphael.poss.name/haskell-for-ocaml-programmers.html#print-debugging

      Personally I don't believe in 100% pure FP, it's both a pain in the ass and doesn't really give you more than 85% FP already would. Actually, most of the FP world seems to agree: out of many Lisps, Scala, OCaml, SML, F#, Erlang/Elixir etc. only Haskell is that hell-bent on purity. Even things like PureScript are more pragmatic than Haskell in this regard.

      Here's a great talk on getting what's best from FP without also taking all the problems: http://www.infoq.com/presentations/functional-pros-cons

    • jnbicheFeb 2016

      > I'd love to hear the argument that says that it is...

      http://science.raphael.poss.name/rust-for-functional-programmers.html

      I personally think Rust isn't functional, but rather multi-paradigm with a strong functional influence. But if you were to add TCO and a few other features, I think Rust would be a full-blown functional language, so it may get there yet.

      In any case, it's useless arguing over (should have known better than say anything), so this will be my last word on the issue.

    Related

    The Incredible Holkblog.theincredibleholk.org23 people

    Booting to Rust

    The Incredible Holk
    Personal · last shared 2022
    togotototogototo.wordpress.com17 people

    The ups of downs of porting 50k lines of C++ to Go

    togototo
    Personal · last shared 2019
    Jeremy Bowersjerf.org78 people

    Functors and Monads for People Who Have Read Too Many “Tutorials”

    Jeremy Bowers
    Personal · last shared 2026
    Don Stewartdonsbot.wordpress.com40 people

    Back to old tricks, or, baby steps in Rust

    Don Stewart
    Personal · last shared 2020
    FP Complete Blogfpcomplete.com201 people

    Monads and GATs in Nightly Rust

    FP Complete Blog
    Company · last shared 2025
    Rust Blogblog.rust-lang.org533 people

    Announcing Rust 1.0

    Rust Blog
    Company · last shared 2026
    Bryan O'Sullivanserpentine.com49 people

    Github is making me feel stupid(er)

    Bryan O'Sullivan
    Personal · last shared 2021
    Eli Benderskyeli.thegreenplace.net428 people

    Common Pitfalls in Go Benchmarking

    Eli Bendersky
    Personal · last shared 2026