While a for-loop is a straightforward construct in other programming languages, the loop macro, despite its power, can present challenges due to its intricacy. I find myself frustrated by its complexity.

However, its conceptual abstractions are intriguing. Take, for example, the following code snippet:

(loop for i below 10 sum i)

The utilization of the term “below” in this context is particularly striking. Contrastingly, in languages like JavaScript, I typically read “i < 10” as “i less than 10,” pronouncing the two words “less than” in order to read the “<” symbol.

The act of reading “<” as “less than” momentarily interrupts my cognitive flow between the two words. The loop macro condenses it as a single word, “below,” allowing me to pronounce “i < 10” more succinctly and smoothly, without interruption. Another viable alternative could be “under.”

Moreover, the expression `1 < i < 10` can be read as “from 1 to 10.”

(loop for i from 1 to 10 sum i)

It enhance code readability mentally and streamline cognitive processing.

  • @save-lisp-and-dieB
    link
    fedilink
    English
    17 months ago

    You make a good point about readability. I find if I can’t pronounce it, I don’t understand the code. Saying code out loud can help me tell if it’s correct.

    I LOVE the hideous monstrosity that is the loop macro. You can pry that hugger from my cold dead face. Warts are the new beauty mark.

    But for loop haters, there’s the iterate package which I’ve heard is more lispy.

  • @github-alphapapaB
    link
    fedilink
    English
    17 months ago

    loop also has other conveniences like upto, downto, by, collect, concat, with VAR = FOO then BAR, etc.