logoalt Hacker News

How close can pure functional programming get to C?

66 points • by stmonty • today at 3:43 AM • 7 comments • view on HN

Comments

jandrewrogers • today at 5:41 AM

Much of the difference in optimizability is that C/C++ allows you to do fairly extreme copy elision. This is important because memory bandwidth tends to be a major performance bottleneck.

C/C++ code can trivially reach into some remote bit of state and mutate it directly. The compiler rarely objects, no matter how ugly the access method or pattern. It is up to the programmer to make sure the invariants hold and the compiler can’t always see through it. These elided copies add up, though it usually has a maintainability and safety cost.

It is related to why functional languages tend to be mediocre for supercomputing in practice despite having nice properties for massive parallelism in theory.

➕ show 1 reply
jeffbee • today at 6:00 AM

This seems to raise the question: is libdeflate fast? My overall impression of libdeflate is that it produces a similar output size to zstd but takes 40 times longer to do it. I realize these are different algorithms of course, but they aren't that different, both being in the Huffman line of the LZ family. So why is libdeflate considered a performance benchmark?

➕ show 1 reply
eigenblake • today at 5:08 AM

I'm very simple. I see Richard Feldman post. I like it. I'll leave it to the experts as to whether this is a case of opportunistic mutation.

jdw64 • today at 6:01 AM

What are some well known programs made with Roc? And I'm curious about the difficulty level of its syntax

➕ show 2 replies