I keep flipping between Clojure and CL. I like functional programming, so I really like the workflow of Clojure, but the more-interactive nature of CL is incredibly appealing and I like that it doesn’t put so many constraints on you. I love how you can inspect everything and dig into the core of the language so easily and the interactive debugger is insanely cool.

But I just find it so painful to use, all the functions have strange names, docs are shaky especially for libraries, and I just keep bouncing off. I am going to try Advent of Code in CL this year, but I always get tied up in knots with the data manipulation, especially how you seemingly need to use the loop macro for basically everything since there aren’t that many data structure manipulation methods in the standard library. Hashes are also pretty awkward to work with compared to Java Maps or clojure maps.

Also, I can’t shake the feeling that doing all my data manipulation with linked lists is horribly slow, especially since they aren’t lazily evaluated.

ASDF and the package system is like no other language I’ve ever used, which always ties me in knots, too.

Does anyone have any tips? Is there something I’m missing regarding data manipulation, or is it more a matter of breaking through the pain barrier with practice?

  • raevnos@alien.topB
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    I definitely prefer scheme’s begin, but progn does have a consistent logic behind its name. (progn expr1 expr2 ... exprN) returns the result of exprN, and (prog1 expr1 expr2 ... exprN) returns the result of expr1. There’s also a prog2 which returns the obvious.

    • moon-chilled@alien.topB
      link
      fedilink
      English
      arrow-up
      1
      ·
      1 year ago

      There’s also a prog2 which returns the obvious.

      It does? Strange. Because the spec says:

      prog2 evaluates first-form, then second-form, and then forms, yielding as its only value the primary value yielded by first-form.

      :)