Since AutoLISP/VisualLISP came up in the meeting ...

8 views
Skip to first unread message

pixel...@gmail.com

unread,
May 4, 2026, 7:46:13 PM (6 days ago) May 4
to Medley Interlisp core

A bit more about the sad story of AutoLISP.

AutoLISP started as a very early version of XLISP (the original author being David Betz)

Essentially AutoDesk (The vendor of various CAD products including AutoCAD) got a copy of this larval version of XLISP from a message group online. They then inserted it into their AutoCAD software as the defacto extension language branding it AutoLISP. David never saw a cent of it and only found out after the fact when he saw it later. He would continue making the language better (XLISP) until it was a small approximation of Common Lisp just with fewer bells and whistles.  So, AutoDesk's acquisition method set a bit bleaker path for their users and draftspeople. They took a larval version of Betz' project and it became their standard - never reaching what XLISP 2.0 would add.

Later a different version based on AutoLISP was added which featured some Microsoft Active X and COM support (very niche and OS specific I know). This was rebranded VisualLISP.

Some of my favorite anti-features:
1. No array support. (Unless you borrow the arrays from the Visual Brainsick layer)
2. No variadic functions.
3. No local variables (other than using / foo bar baz in a function signature which act like &aux foo bar baz in CL)
3. No mutable lists (debatable from a FP purist standpoint)
4. No closures (historically less important, though fixed later in XLISP)
5. No splicing quote ex `(,foo bar @baz)
6. No macros.
7. Commandline commands are string based when called from the VisualLISP side.
8. Function naming conventions dictate if they're available to the user at the REPL directly.

My favorite feature:
(ATOMS-FAMILY) is a good pun that shows bound symbols. This makes sense as VisualLISP is both creepy and kooky, mysterious and spooky. If not all together ookie. *snap* *snap*

Culturally, users of VisualLISP are isolated.
There are a few who have seen other Lisps but most have not used any other dialect.
So they have the own way of doing things that grew out of a different culture than your average Lisp hacker.

I only know about it because my drafting teacher in Industrial Arts thought we should all take home an illegal copy of AutoCAD 2004 which I may or may not have. I've kept up on drafting for the most part, lots of woodworking plans and other things. I recently applied for a glass cutting position here in town and as they use AutoCAD I may dust off some VisualLISP once more.

XLISP split a few different ways, it got OOP support at one point.
It also became embedded in today’s  Audacity via Nyquist plugins.

Honestly, I would consider it for an extension language if something like ECL was too heavy for the scope of a project.

- Ryan





pixel...@gmail.com

unread,
May 5, 2026, 12:34:53 AM (6 days ago) May 5
to Medley Interlisp core
This is a fairly solid example. 
You can see him using lambda here in function position to get local variables since LET doesn't exist and PROG can't create new variables.
https://lee-mac.com/lisp/html/Mastermind.html

Paolo Amoroso

unread,
May 5, 2026, 7:29:29 AM (5 days ago) May 5
to pixel...@gmail.com, Medley Interlisp core
I never used AutoLISP and didn't know it was so, um, idiosyncratic.


--
You received this message because you are subscribed to the Google Groups "Medley Interlisp core" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lispcore+u...@googlegroups.com.
To view this discussion visit https://groups.google.com/d/msgid/lispcore/fa36a29f-c43c-42ff-9cd8-2d3ac03832d0n%40googlegroups.com.


--

Ryan Burnside

unread,
May 5, 2026, 11:14:49 AM (5 days ago) May 5
to Paolo Amoroso, Medley Interlisp core
Yes, it's terrible.

Things got MUCH more normal in XLISP 2 but unfortunately about 3 or 4 other rival CAD vendors copied AutoDesk's AutoLISP homework since it was the industry standard.

Just wanted to expand on Herb's mention of me thinking it was an unsavory Lisp since I wasn't able to attend the meeting. 

None of this has any bearing on Interlisp, but I just wanted to show why I consider some "Lisps" a mistake. A Lisp can go south very quickly with bad fundamentals or a lost culture around it. I've seen both in some recent and hobby Lisps.

I guess if nothing else this is a tale of how just how far a notion of Lisp can drift without a cultural appreciation for tradition and Lisp being "The Programmable Programming Language". You don't see many newer Lisp projects looking like Common Lisp (which is my favorite). You will see more Haskell, Ocaml and Rust influence in hobby "Lisp" projects across github. Right now many younger people are spooked about the "dangers" of dynamic binding, garbage collection, and lack of Hindly-Milner types. A lot of this has come from popular YouTube influencers pushing Rust. So you have this dynamic of sloppy JavaScript and Python being "fixed" and people going to the other extreme in Rust.

These are a lot of the debates I see in IRC from newcomers too. Right off the bat they want you to argue against their case for Lisp not being "safe". But really, it's the Lisp has intentionally different values.


- Ryan
Reply all
Reply to author
Forward
0 new messages