low-level approach

Brian P Templeton bpt@tunes.org
Mon Jan 14 19:18:02 2002


mdanish@andrew.cmu.edu writes:

> On Mon, Jan 14, 2002 at 03:03:17PM +0100, Alex Thiel wrote:
>> On Monday 14 January 2002 14:31, Kyle Lahnakoski wrote:
>> > Brian P Templeton wrote:
>> > > Kyle Lahnakoski <kyle@arcavia.com> writes:
>> > > What? Lisp doesn't `naturally' handle strings. Lisp, to me, seems to
>> > > naturally handle sequences (lists, arrays, etc), dictionary-type
>> > > objects (alists, hashtables), and functions.
>> >
>> > Good, take that one step further and see that strings are lists of
>> > characters.  Lisp has many list manipulation functions, and therefore
>> > string manipulation functions.
>> >
>> 
>> Maybe I got that wrong, but I think list in Lisp are objects separated by 
>> spaces. So, in that sense strings are not lists.
>> 
> 
> You're both off.  Most Lisp implementations implement strings as vectors,
> and they certainly do not implement vectors with lists (as Kyle stated
> elsewhere).  Records (structs in CL) can be implemented a number of ways.
> 
Actually, I think that ANSI CL *requires* structs to be implemented
with CLOS (as a metaclass, IIRC).

> Secondly, lists are not 'objects separated by spaces'.  That's called the
> print-representation of a list and you can change that if you so desire.
> A more precise definition might be: lists are chains of cons cells.
> 
> As for this entire sub-thread, if any modern Lisp were truely as you
> describe it, it would be less than useless for most practical purposes.
> I want arrays, structs, classes, hashtables, etc, and I want them
> *efficiently* implemented in native-code compilers.  Of course Java/C++
> and the rest of the crowd were to be compared against that extremely
> backwards and limited form of Lisp then they would seem to be more
> practical.  Fortunately the designers of Common Lisp didn't think that way.
> If you want an example of a Lisp that is closer to what you present,
> see the misnamed "newLISP", http://newlisp.sf.net/ I believe.
> 
> Finally: The fact that all Turing-complete languages can express each other
> does not lead to the conclusion that all Turing-complete languages are
> equally expressive, or have equal semantics.  I can write a Lisp program
> with Turing-machine notation if I first design a Lisp interpreter/compiler
> in Turing-machine notation.  But by the fact that I have to write an
> interpreter/compiler first means that Turing-machine notation does not
> have the same expressiveness as Lisp.  It also means that the semantics are
> different, as I had to change them by writing the interpreter/compiler
> which is quite literally "a function from program to answers" (FOLDOC).
> Your definition of semantic equivalence doesn't fit the definition of
> semantics.  All you've shown is that in a Turing-complete language,
> there is some way to express a program that was already expressed in
> another Turing-complete language.  If a program was already expressed
> in a Turing-complete language then it solves something computable.  And
> that would suit a Turing-complete language.
> 
> Apologies for not responding to the grandparent post, as I wanted to address
> issues from the parent as well.
> 
> -- 
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> ;; Matthew Danish                         email: mdanish@andrew.cmu.edu ;;
> ;; OpenPGP public key available from:        'finger mrd@db.debian.org' ;;
> ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> 

-- 
BPT <bpt@tunes.org>	    		/"\ ASCII Ribbon Campaign
backronym for Linux:			\ / No HTML or RTF in mail
	Linux Is Not Unix			 X  No MS-Word in mail
Meme plague ;)   --------->		/ \ Respect Open Standards