Of course, Common Lisp spoiled me beyond words. I've tried OCaml the other day. It might be a good language, but I can't seem to make it integrate nicely with the Emacs workflow that I was used to from Common Lisp. You need ;; at the end of your expression when in the REPL, but not when building a standalone app in OCaml. When compiling it's considered bad practice to put ;; But without it, the REPL doesn't know where the expression ends. Or something like that, anyway.
Same story with Prolog. It might be a good language, but there are all sorts of special cases and exceptions when working with it interactively. I've gotten so much used to working interactively, to have a live, one-on-one honest conversation with my language and environment that languages without it seem brain-dead somehow.
Try https://github.com/triska/ediprolog for a great interactive Prolog mode for Emacs. Much better that SLIME (as I remember it from briefly playing with it ten years ago): There is no notion of moving code from your edit buffer to a REPL, the code in your edit buffer is your program. Queries are also part of your program (using special comment syntax) rather than entered in a separate REPL and lost when you close that.
I think Tuareg-mode also makes the OCaml part a lot less painful. It's a bit unfair to compare Lisp used with tight Emacs integration to OCaml used seemingly without the corresponding integration.
OCaml is pretty sweet too, but I think it strikes a different balance. You end up with something more static of course, but I've found it to be quick to compile, and quick to run.
You still can't compare to the SLIME experience for CL of course, though tools like Utop are nice. That and a few other add-ons try to fill some gaps.
Of course, Common Lisp spoiled me beyond words. I've tried OCaml the other day. It might be a good language, but I can't seem to make it integrate nicely with the Emacs workflow that I was used to from Common Lisp. You need ;; at the end of your expression when in the REPL, but not when building a standalone app in OCaml. When compiling it's considered bad practice to put ;; But without it, the REPL doesn't know where the expression ends. Or something like that, anyway.
Same story with Prolog. It might be a good language, but there are all sorts of special cases and exceptions when working with it interactively. I've gotten so much used to working interactively, to have a live, one-on-one honest conversation with my language and environment that languages without it seem brain-dead somehow.
I agree with your "terrible regression" comment.