gls@THINK.COM (Guy Steele) (08/21/90)
I would like to plead for a little flexibility and tolerance in the question of "What is Scheme?". Scheme has evolved quite a bit over the last 15 years and it seems to me to be too rigid to disqualify an implementation because it lacks a few string functions or even because it lacks CALL/CC. That may disqualify it from being Scheme R^3.95 or whatever, but not, in my eyes, from belonging to the Scheme family. The original 1975 Scheme didn't have any string functions, but surely it may still be regarded as a Scheme at least to the extent that Lisp 1.5 is still regarded as a Lisp. Allow me to offer my opinion on what makes a Scheme: lambda calculus, which includes: variables, lexically scoped lambda expressions that evaluate to first-class closures combinations (i.e., function calls) with the same evaluation rule used for all positions (function and arguments) Lisp syntax, probably a standard representation for programs as data, probably (typically as lists and symbols) a means of manipulating continuations, maybe (best if they are first-class) a primitive side effect on variables or data, maybe I regard all other data types, including numbers and strings, as entirely inessential to Scheme-ness. The same goes for control structures (I'll just synthesize DELAY and FORCE myself from closures and side effects). So there is one opinion. Let's hear some others. --Guy
jinx@zurich.ai.mit.edu (Guillermo J. Rozas) (08/22/90)
I regard all other data types, including numbers and strings, as entirely inessential to Scheme-ness. The same goes for control structures (I'll just synthesize DELAY and FORCE myself from closures and side effects). So there is one opinion. Let's hear some others. I agree. Especially since the language is such that even numbers and strings (and pairs, etc.) can be built out of the very powerful glue of procedures. The great thing about Scheme is that the glue is so good that you hardly need anything else. Everything else is convenience. To me the core of Scheme is [lambda,set!,quote].
clamen@CS.CMU.EDU ("Stewart M. Clamen") (08/23/90)
Date: 22 Aug 90 16:24:11 GMT From: "Guillermo J. Rozas" <snorkelwacker!ai-lab!zurich.ai.mit.edu!jinx@bloom-beacon.mit.edu> Organization: M.I.T. Artificial Intelligence Lab. References: <TED.90Aug20125352@kythera.nmsu.edu>, <9008211445.AA02571@mozart.think.com> Sender: scheme-request@mc.lcs.mit.edu I regard all other data types, including numbers and strings, as entirely inessential to Scheme-ness. The same goes for control structures (I'll just synthesize DELAY and FORCE myself from closures and side effects). So there is one opinion. Let's hear some others. I agree. Especially since the language is such that even numbers and strings (and pairs, etc.) can be built out of the very powerful glue of procedures. The great thing about Scheme is that the glue is so good that you hardly need anything else. Everything else is convenience. To me the core of Scheme is [lambda,set!,quote]. I remember asking at one of the IEEE standardization meetings whether a Scheme-like language with no numbers other than the Wholes (Church numerals?) could fit within the Standard. It might have been a rush to consolidate opinion, but I don't remember anyone else thinking it was worth considering. SMC
matthias@titan.rice.edu (Matthias Felleisen) (08/23/90)
Guillermo J. Rozas writes that "since [Scheme] is such that even numbers and strings (and pairs, etc.) can be built out of the very powerful glue of procedures." I disagree. Please show us how to build numbers such that number? and procedure? work and our programs still work, too. I maintain that Schemeness includes untypedness, id, lambda, and application, set!, call/cc and (whatever) datatypes (one likes) with predicates. Indeed, I go even as far as saying that the two major contributions of Scheme as a language are UNTYPED CLOSURES and FIRST-CLASS CONTINUATIONS. All things in Scheme were around before but without Scheme these two wouldn't have made it into today's programming language world. -- Matthias
jinx@zurich.ai.mit.edu (Guillermo J. Rozas) (08/24/90)
Guillermo J. Rozas writes that "since [Scheme] is such that even numbers and strings (and pairs, etc.) can be built out of the very powerful glue of procedures." I disagree. Please show us how to build numbers such that number? and procedure? work and our programs still work, too. You did not read my message carefully. I said "To me the core of Scheme is [lambda,set!,quote]." It is clear that if language A is a subset of language B, all programs written in A will run in B, while the converse need not hold. Interpreting "core" as "essential subset", it is clear that your objection is silly. Any program that I write with [lambda,set!,quote] will run in "full" Scheme. You are criticizing my core because the converse does not (may not) hold, ie., for not supporting the whole language, but that was never the intent. You don't need to dig into discriminating between zero and false, and the empty list (although discussion from another mailing list should tell you that I don't mind not being able to distinguish between them) to find issue with my core. I did not include call-with-current-continuation nor conditionals yet I cannot define them on top of my core, and I don't intend to program in continuation passing style all the time, which is, _essentially_, the only way to get the functionality out of it. GLS asked for opinions about what "a Scheme" would be. I gave mine. Neither I nor GLS (if I understand his message correctly) attempted to answer what made IEEE draft Scheme IEEE draft Scheme or R^3.9* Scheme R^3.9* Scheme. The answer is straight-forward: the full requirements of the corresponding document.
matthias@leto.rice.edu (Matthias Felleisen) (08/24/90)
In article <JINX.90Aug23190740@chamarti.ai.mit.edu> jinx@zurich.ai.mit.edu writes: > > Guillermo J. Rozas writes that "since [Scheme] is such that even > numbers and strings (and pairs, etc.) can be built out of the very > powerful glue of procedures." I disagree. Please show us how to build > numbers such that number? and procedure? work and our programs still > work, too. > >You did not read my message carefully. > 1. I responded to your claim that numbers which as far as I am concerned includes number? can be written in your "Scheme core". I am happy to see that you know that this is impossible. 2. The original question was "what is a Scheme". I answered to this question and interpreted it as "what is the essence of Scheme". I agree that one could interpret the question as "what is the part of Scheme that is most interesting to you". As far as I am concerned and as I mentioned before, the most interesting things about Scheme are call/cc and first-class continuations. -- Matthias
jinx@ALTDORF.AI.MIT.EDU ("Guillermo J. Rozas") (08/28/90)
1. I responded to your claim that numbers which as far as I am concerned includes number? can be written in your "Scheme core". I am happy to see that you know that this is impossible. Thank you for your blessing! :-) It depends on what you mean by impossible. It is straight forward to implement number?, procedure?, etc., as long as you are willing to follow some simple constraints. In particular, the constraints are so trivial that they can be built into the syntactic transducer that will handle IF, LET, etc. for you, so I'm not sure that I agree that it is impossible as opposed to merely awkward. 2. The original question was "what is a Scheme". I answered to this question and interpreted it as "what is the essence of Scheme". I agree that one could interpret the question as "what is the part of Scheme that is most interesting to you". Isn't that a possible interpretation of the word "essence"?
matthias@RICE.EDU (Matthias Felleisen) (08/28/90)
Hi! My original posting said that my existing programs should work. This is the constraint that is crucial: you cannot express number?/procedure? if you accept that condition. Think about it. The proof of this claim is contained in my paper on expressiveness that I advertised (modulo some formalism). As you know, if you admit unrestricted classes of translations you can always encode programs as some basic data (quote/cons, numbers) and interpret/compile&eval them. The classes of translations in which you think you can satisfy my claim can do that. Your statement is therefore "without teeth", i.e., not very meaningful. If we interpret "essence" as what we like best, we don't have a dialogue but only a debate. What I like best is based on emotions, what is absolutely crucial to the language (in the above sense) is a formal statement and can be discussed (e.g. which classes of translations are interesting for what reason). I prefer logical discussions over emotional debates (the latter are useless for me as a language researcher) but am willing to do both (South Germans are hot-blooded, too :-) ). -- Matthias
gls@THINK.COM (Guy Steele) (08/29/90)
Date: Tue, 28 Aug 90 10:15:17 CDT From: Matthias Felleisen <matthias@rice.edu> ... If we interpret "essence" as what we like best, we don't have a dialogue but only a debate. What I like best is based on emotions, what is absolutely crucial to the language (in the above sense) is a formal statement and can be discussed (e.g. which classes of translations are interesting for what reason). I prefer logical discussions over emotional debates (the latter are useless for me as a language researcher) but am willing to do both (South Germans are hot-blooded, too :-) ). Einen geschenkten Gaul sieht man nicht im Maul. --Der Grossquux