[movitz-devel] Re: Lisp OS
mikel evins
mikel at evins.net
Wed Feb 4 21:39:13 UTC 2004
On Feb 4, 2004, at 11:17 AM, Klaus Uhl wrote:
> mikel evins <mikel at evins.net> writes:
>
>> This is not to argue that a Lisp OS should use the same sort of
>> abstraction; rather, it is to argue that Plan 9 demonstrates how far
>> the uniform application of a simplifying abstraction can get you. What
>> I'm interested in, in this context, is this: what are the simplifying
>> abstractions that are natural in Lisp? What Lisp features can collapse
>> the complexity of a modern OS into something as simple as, or simpler
>> than, Plan 9? Closures over streams, perhaps?
>
> I'm not a Lisp expert but what about objects? Everything in Common
> Lisp is an object, even classes. Could that be a "natural" abstraction
> for a Lisp OS?
>
I think that's not saying enough. Everything in Common Lisp is an
object, that's true, but saying so does nothing to make sense of the
perhaps complicated world of machine resources managed by an operating
system. Plan 9 achieves a simplification of the way that human
beings--programmers or users--interact with the machine by choosing a
particular small set of objects in terms of which to represent a wide
variety of resources. The abstraction they choose is not necessarily
the right one for Lisp, but it works in terms of what they were trying
to do.
Idioms that are natural to Lisp include variables and slots for
containing things; lists for managing groups of things; (generic)
functions for doing things. Just as an off-the-top of the head idea for
discussion, imagine that each user of a Lisp OS gets a namespace with
functions defined that return collections (lists? tables? databases?)
of useful resources. For example, suppose that all of these expressions
make sense to type at a listener (and that they presumably have
corresponding direct-manipulation equivalents in a presentation system
of some sort):
(open-documents)
(open-documents :newer-than (yesterday))
(users :onlinep t)
(tools :for-documents-of-type :text)
(setf (get-contact "Joe Blow") (get-input-from-user :type :contact))
(invite (get-contact "Joe Blow")
:session-scope :private
:session-type :shared-read-write
:session-lifetime :unlimited
:include-documents (documents #<some-query>)
:security #<some-security-protocol-specifier>)
Most of these examples are similar to things we were trying to do in
the Lisp version of Newton. The exception is the last one, which
represents some sort of concept of ownership and permissions that can
be selectively extended from one person to another, to include some
specified set of machine resources.
--me
More information about the movitz-devel
mailing list