I’m a “Neovim Refugee” trying to get a deeper/better understanding of how emacs lisp works and how i can use it to expand on my emacs setup. I have never done anything in lisp before and still struggle to understand how single quotes signify a function or what ever.

With that said, i was also planning on doing AoC this year. Originally i wanted to look into zig or go, but now think that this might be the opportunity to dive into lisp for a bit.

But with knowing basically nothing: Is this even “viable”, or advisable? Should i be looking at common lisp instead? Or would you say that’s a pretty dumb idea and i should rather learn it in a different way?

1 point

I have never done anything in lisp before

Emacs has a built-in emacs lisp tutorial. That would be a good starting place.

struggle to understand how single quotes signify a function or what ever

Not exactly sure what you mean by that. Again, I recommend the manual, but you can think of quoting as a way to tell the interpreter “don’t evaluate this”.

e.g.

(prin1 (+ 1 1)) ; (+ 1 1) is evaluated, prints 2
(prin1 '(+ 1 1)) ; prints the literal list (+ 1 1)

There is also backquoting, which I recommend reading up on, too. The syntax and rules are simple, but powerful.

Is this even “viable”, or advisable?

Try it out. At worst you’ll learn something. Fretting about whether or not to give it a shot is a waste of time. I’m sure you can find previous problems and solutions in a lisp.

Should i be looking at common lisp instead?

Do a few problems in elisp, a few in Common Lisp.

Or would you say that’s a pretty dumb idea and i should rather learn it in a different way?

The only foolish idea is to spend time debating about whether or not to try learning something. No one can make that call for you. Try it and see if you like it.

permalink
report
reply
1 point

FWIW, I learned Rust and Python using AoC - I don’t see why you couldn’t pick up ELisp the same way. As long as you have an idea how to solve the problem, you should be able to express that algorithm in ELisp.

The one challenge you may face is the availability of data structures in ELisp (stacks, queues, deques, etc), but I’m not an expert there, so someone else may have some pointers.

permalink
report
reply
1 point

There are two ways to answer this. First, people manage to do things like AoC in pretty odd and esoteric languages all the time, so doing it in elisp is totally viable. Is it advisable? Not sure. elisp really is technically a general purpose language, but it’s really meant for constructing Emacs components and extensions. I don’t think AoC would teach you how to do that sort of thing; it would only teach you how to write AoC type problems in a very odd lisp dialect that isn’t much like most other modern lisps.

permalink
report
reply
1 point

Everybody learns differently, and there’s a lot of people who learn languages through advent of code. AoC can have some problems that could take literal years to solve with a naive solution, so just keep in mind you can cancel a slow function with C-g and you don’t need to reboot emacs entirely.

The other thing to keep in mind is that this would help you learn elisp (and general lisp syntax), but won’t teach you as much about the functionality you can do with emacs. It’s still a good place to start though, since you’ll need to know elisp to customize emacs.

Lastly I would recommend looking into Structural Editing a bit, here’s a decent article that covers the basics in vanilla emacs. This is by no means a requirement for writing elisp, but using the sexp commands makes working with all the parentheses infinitely easier.

Good luck!

permalink
report
reply
1 point

Thanks for that article

permalink
report
parent
reply
1 point

I think an elisp AoC sounds pretty fun. Given the typical AoC problems, you might get some good use out of some ancillary libs like f.el, s.el, and dash.

permalink
report
reply

Emacs

!emacs@communick.news

Create post

A community for the timeless and infinitely powerful editor. Want to see what Emacs is capable of?!

Get Emacs

  • Windows
  • Mac OS X
  • GNU/Linux and BSD (Just get it from your distribution’s package manager)

Rules

  1. Posts should be emacs related
  2. Be kind please
  3. Yes, we already know: Google results for “emacs” and “vi” link to each other. We good.

Emacs Resources

Emacs Tutorials

Useful Emacs configuration files and distributions

Quick pain-saver tip

Community stats

  • 18

    Monthly active users

  • 562

    Posts

  • 2.4K

    Comments