Re: Re: Lisp OS
mikel evins <[email protected]>
| Newsgroups | gmane.lisp.movitz.devel |
|---|---|
| Message-ID | <[email protected]> |
On Feb 4, 2004, at 11:17 AM, Klaus Uhl wrote: > mikel evins <[email protected]> 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