[Cuis-dev] Emacs & Smalltalk

Jacob MacDonald jaccarmac at gmail.com
Sat Jan 1 22:19:57 PST 2022

On Fri, Dec 31, 2021 at 1:45 PM Mariano Montone via Cuis-dev
<cuis-dev at lists.cuis.st> wrote:
> Yes, but in the rest of the system you also get "objects" all the time
> too. For example, consider this:
> (eq '(hello world) (hello world))
> That expression evaluates to nil (false). Two different lists (objects)
> are created, and when compared by identity (eq) it returns false.
> I know, I know, I'm using a waay too loose meaning of "objects".

True enough, and I used a loose definition first. Message-passing is
Smalltalk's special feature; Objects in the above sense exist in most
high level languages I know. In Emacs, the list does not receive an
"eq" message and I can't interactively change the behavior of (eq) for
lists or symbols or the empty list. Consider:

(eq '(hello world) '(hello world)) ;; nil
(eq 'hello 'hello) ;; t
(eq '() '()) ;; t

CLOS or EIEIO can implement message-passing, I think, but it's not
core to Emacs as it is to Cuis or Pharo.

> What you mean? Buffers at programming level, or user interface level?

Both! Emacs buffers are like Smalltalk UI objects in that users can
manipulate them directly or control them with code. See editable Dired
buffers, for example. But they are text at the core, not containers
for data and messages.

> Emacs is limited at user interface, but there are some experiments at
> moldable development anyway:
> https://ag91.github.io/blog/2021/08/22/moldable-emacs-vega-lite-nyxt-and-emacs-towards-sustainable-development/
> (I haven't tried them, though).

I haven't even heard of them, so thank you!

More information about the Cuis-dev mailing list