Generators in Lone Lisp

Lone Lisp adds pause‑and‑play functions; fans cheer while purists nitpick

TLDR: Lone Lisp added generators—functions that can pause and resume—to make loops faster and simpler without copying stacks. Fans love the practicality and performance angle, while purists debate whether it’s just a nerfed coroutine; memes about “restraining bolts” and “Netflix for loops” sealed the vibe.

Lone Lisp just dropped generators—think “pause and play” for functions—and the community went full reality‑TV about it. The dev’s rallying cry, “Begone, memcpy. Begone,” set the tone: this is about speed and sanity in loops, not wizard‑level power tricks. Some readers applauded the move as the first sensible foundation for iteration: finally, a way to produce values one‑by‑one without copying giant stacks every time.

But the purists came armed with taxonomy. One commenter waved a Stack Overflow explainer classifying continuations into “asymmetric vs symmetric” and “stackful vs stackless,” arguing the new “semi‑coroutines” are a tidy, narrower tool. Others called it a nerfed version of coroutines and accused Lone of reinventing the wheel—then politely sanding off half the spokes. The vibe: simplicity vs. purity, performance vs. theory.

Meanwhile, jokes flew faster than a for‑loop. Folks memed the “restraining bolts” line (yes, like sci‑fi droids) and compared generators to Netflix for loops: you hit “next episode” and the function resumes exactly where it left off. A few snarked that infinite lists will now binge‑watch themselves. Love it or side‑eye it, the crowd agrees on one thing: fewer stack copies in hot loops is a win. The only question is whether this “less power, more speed” play becomes Lone’s new personality.

Key Points

  • Lone Lisp introduces a dedicated generator type intended to underpin iteration.
  • A sample generator yields sequential values and raises an error once exhausted.
  • Generators are framed as semicoroutines that yield only to their caller for simplicity and implementation ease.
  • Delimited continuations are considered too costly for iteration due to stack copying (memcpy) and multishot/clonable behavior.
  • Implementation shifts to stack-switching coroutines by giving continuations their own stacks, avoiding copies and sharing machine resources.

Hottest takes

"I like the overview given in this Stackoverflow answer" — hencq
"Asymmetric or symmetric" — hencq
"Stackful or stackless" — hencq
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.