An Agent in 100 Lines of Lisp, or How my Prof was Right - Just 25 Years Early
(thebeach.dev)
from cm0002@libretechni.ca to programming@programming.dev on 12 Jul 06:40
https://libretechni.ca/post/1823243
from cm0002@libretechni.ca to programming@programming.dev on 12 Jul 06:40
https://libretechni.ca/post/1823243
#programming
threaded - newest
I always find Lisp a bit mind bending and feel like I will be a better programmer once I master it. But it also feels like wood carving, and most of the time I just need to slap some planks together for a bookcase, and don’t have the time to scrimshaw it into a beautiful work of art. I’m not seeing here how Lisp is differentiated from an agent with a code sandbox and python, unless we’re operating that agent inside of Emacs… That’s where the code and the data are swimming together. I don’t think there isn’t a difference, it’s more a matter of my not getting it, if anyone is able to help me understand it’d be appreciated
I feel the same! also there is
evalin javascript or any other scripting language. why use Lisp specifically?I self-learned lisp last year using the old SICP book, but I do consider myself a fairly expert programmer, and I felt that book was a bit hard at the end of it.
IMHO the key difference of lisp’s eval wrt python’s eval is that it takes in input a parsed expression (a lisp list) and not a string. In lisp though you don’t have to use eval much, because the macros allow you to transform the expressions from your programs directly (take in input parsed code, return a different code structure to be executed). The quote and quasiquote functions are there to make that easy!
I don’t know javascript enough, but in python you’d have to use eval and use some kind of parsing package crazyness if you wanted to implement a similar macro system!
You can implement an agent loop in any language, and modern languages can do everything that lisp can, so there’s nothing magic in lisp. At the end of the day lisp is just another weakly typed functional/procedural language.
Personally I didn’t find lisp that much elegant due to the loose typechecking and the excessive parentheses, but the macro system allows some very terse and smart (and mind-bending, as you said) solutions, which do feel pretty cool when they work fine.
IMHO it’d be probably better to give your agent access to a python interpreter because it’s much more prevalent in the training data than lisp…
Sometimes restrictions are features. What if you don’t want to hand out shell access? Then you are back to a list of tools again.
Lisp is a cool language. It was many years ago now, but I recall writing a lisp interpreter in lisp for a college project. It was only ~100 lines of code and my recollection is that it worked remarkably well.