For the best experience on desktop, install the Chrome extension to track your reading on news.ycombinator.com
Hacker Newsnew | past | comments | ask | show | jobs | submit | history | s20n's commentsregister

I agree with the notion that having multiple passes makes compilers easier to understand and maintain but finding the right number of passes is the real challenge here.

The optimal number of passes/IRs depends heavily on what language is being compiled. Some languages naturally warrant this kind of an architecture that would involve a lot of passes.

Compiling Scheme for instance would naturally entail several passes. It could look something like the following:

Lexer -> Parser -> Macro Expander -> Alpha Renaming -> Core AST (Lowering) -> CPS Transform -> Beta / Eta Reduction -> Closure Conversion -> Codegen


Reminds me of the essay 'In Praise of Idleness' by Bertrand Russell <https://harpers.org/archive/1932/10/in-praise-of-idleness/>

For me man(3) is the most interesting of them all.

Run `apropos . | grep "(3)"`; you'll be surprised how many libraries come with man pages for their functions (e.g; curl).

Now I wonder if there are any IDEs that can automatically dial into these man pages and pull up documentation for functions?


  apropos --sections=3 .
may be a better version of what you propose, depending on what you're looking for. On my system, this also gives me entries from sections like '3x' and '3ossl' and '3bsd'.


There's guaranteed to be some sort of context-sensitive man plugin for vim &| nvim for shell scripts.

Also, have you ever seen the DOS Borland IDE context sensitive help UX?


I think for Vim, it’s “K”. But for emacs, you only need to use “m-x man” and have a nice viewer.


Cool. And GNU "info" is a hyperlinked doc viewer system. Some GNU and other projects promote info doc as more authoritative than man pages. Man pages are expanded cheat sheets.

For in-depth doc, I do appreciate docset-based indexed search apps like Dash that can download and update comprehensive doc locally with greater performance and less internet dependency than internet only. There's even vim and nvim plugins to bring that to them too without leaving the terminal.


I just tried this out, this is amazing!

It does actually have a lot of R7RS support (like #!fold-case) however it doesn't seem to work with polar complex numbers (e.g; 2@1.5) or complex numbers with infnan (e.g; 3+inf.0i or +inf.0+3i).

more about the implementation: https://www.lisppad.app/applications/language


Author from LispPad here... Polar complex number literals are actually not part of R7RS and (make-polar ...) would need to be used for writing portable code. Complex number literals with infinite parts are supported, but I noticed that LispPad might behave differently as it does apply mathematical equivalences that are being ignored in other Scheme implementations. Let me know if you see a behavior that violates the R7RS spec. Thanks!


Thanks for working on LispPad, I'm really enjoying using it.

> Polar complex number literals are actually not part of R7RS

I actually thought they were part of the spec. Specifically, I am referring to the last paragraph from section 6.2.5 of R7RS small <https://small.r7rs.org/attachment/r7rs.pdf>

This is the excerpt from the pdf:

6.2.5. Syntax of numerical constants

...

There are two notations provided for non-real complex numbers: the rectangular notation a+bi, where a is the real part and b is the imaginary part; and the polar no- tation r@θ, where r is the magnitude and θ is the phase (angle) in radians. These are related by the equation a + bi = r cos θ + (r sin θ)i. All of a, b, r , and θ are real numbers.


Thanks for the reference! I must have overlooked this when implementing the scanner. Will definitely be added. Thanks for letting me know.

Does this have an MCP server?


+1. OP is clearly not read for the Agentic Era


I'm sure this is really smart but boy is this a pain to read. I even tried holding the orbs in hopes of reading the text but it kept reflowing so much that I gave up after 5 minutes.

Edit: I just realized that clicking once freezes the orbs.


I was clicking and clicking hoping for the reflow madness to stop.

Thanks for this tip -- BTW we need to click _each_ orb.

Occationally a previously untamed orb will start making its presence known until it is stopped. OK I think I have been able to catch every orb now. Now onto read about the future of text layout.


Structure and Computer of Interpretation Programs


> I’ve been using Copilot - and more recently Claude - as a sort of “spicy autocomplete” and occasional debugging assistant for some time, but any time I try to get it to do anything remotely clever, it completely shits the bed.

This seems like a really disingenuous statement. If claude can write an entire C compiler that is able to compile the linux kernel, I think it has already surpassed an unimaginable threshold for "cleverness"


You mean the one that can’t compile hello world?


But the article says "our human ancestors" which implies they are not talking about other hominins."

Edit: Okay I just found that Human can also refer to other hominids

from: https://www.merriam-webster.com/dictionary/human

- a bipedal primate mammal (Homo sapiens) : a person

- broadly : hominid


Of course, just as the highlight tool is used for redaction, wingdings is used for encryption!


Not Cyrillic?


Consider applying for YC's Summer 2026 batch! Applications are open till May 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search:

HN For You