upvote
> I just find readability such a hurdle

I've had the same complaints when I started. I think, realistically, every programmer who's learning Lisp after getting experience in a bunch of other languages has to deal with that. The mental overhead feels real. Yet, after a while, there's some psychological threshold - Lisp starts feeling more intuitive. At some point, there's just no turning back - nothing ever will feel again more readable than Lisp code. It's just like riding a bike. Once you "get it", there's just no way to "unget it" back.

reply
Common Lisp code can be very procedural if that's what you want to do. The entire loop macro is basically importing Algol-styled procedural loops into Lisp.
reply
that's the conclusion i came up with after learning common lisp. it didn't feel much different from what i had learned before.
reply
Lisp really needs extensive structural editing tools IMO, and you really have to change how you think about reading source text and that can take longer than you might think. The best Lisp experience by far and away is LispWorks. That being said, I never found it to be to my tastes either. Too much focus on making tree-representations of programs the centerpoint, which isn't how my internal grammar works. I'd much prefer less explicit delimitation where it's not actually needed, but that's also incompatible with the goal of sexprs.
reply
(Heresy alert. Inb4 homoinconcity)

I do find that most of my lisp skills carry over to JavaScript quite well while allowing me to write imperative functions more fluently.

Prog blocks are pretty good. I wonder if another DSL could be better.

reply
Maybe because Brendan Eich was tasked with "doing Scheme in the browser" before it pivoted to JavaScript.
reply
Imagine what could have been...
reply
You don't have to imagine. Clojurescript exists.
reply
> I find a procedural style of programming so much easier to reason about, both when writing and reading.

Then do that.

There's nothing stopping you from using pretty much any style of programming that you like. Or mix and match. Or evolve over time.

Loops, lists, arrays, structures. Simple iteration: dotimes, dolist, loop. If those are your bread and butter, then feast! CL will happily do that. That's what I do. I just don't think "functionally" when I do CL code, I'm just not there yet, so its unnatural for me, and not what comes spewing out of my fingers when I write code.

And it's "OK".

You don't have to use the other features of the language, but they're there if you want to dip your toe into it.

With CL, also, I tend to be really wordy on variable and function names. I'm really fond of kabob-case-for-identifers.

reply
For me, the most effective way to read Lisp is to essentially forget the parentheses (I shadow them out in matching, low contrast colors) and go almost entirely by indentation. I find this makes it more similar to reading other languages, though granted not exactly the same.

You do have to keep up with the parentheses of course, but editor settings or extensions can make this automatic if not invisible.

reply