Writing a REPL that evaluates-as-you-type, keeping the UI responsive and staying defensive against runaway memory usage: https://scattered-thoughts.net/writing/making-live-repls-behave/ It's a really hard problem for PLs, but even this small live demo has a lot of complexity.