Talk:Scheme (programming language)
Hygienic macros
Hi
The following text was found in Hygienic macro, but I don't know enough about Scheme to integrate properly. Please could someone else handle this:
Scheme macros
- Transforms derived expression types into primitive expression types.
- During expansion, no evaluation ? rewrites one pattern of code into another.
- May use macros if we want to ommit Scheme?s call by value evaluation
DJ Clayworth 15:28, 21 Nov 2003 (UTC)
It is unfortunate that hygienic macro redirects to Scheme programming language where there's only little information on the subject. MH 15:29, 16 Mar 2004 (UTC)
Most of the advantages listed stem from more general design decisions than that of Scheme in particular:
- Concerning syntax it's a feature of all Lisps (well, except for the very first design of Lisp which did not use S-exprs)
- Concerning the functional aspect, it is as the name suggests common to all functional languages.
I've therefore added in the section what these advantages stem from. Sam 00:15, 11 Aug 2004 (UTC)
Evolution of scheme
Two sections, Disadvantages of Scheme and Standards, talk about official and community standards, but in a rather unenligtening way. A brief history of scheme should be written, covering the nature of the RnRS process, the status of the IEEE standard, the reasons for doubting there will ever be an R6RS, and why the SRFI process was created and what has been going on with it.
I propose a rewrite of these two sections, with a new section "Evolution of Scheme" as the first numbered section that covers the above. Any objections to me diving in and doing that? ---- Charles Stewart 09:01, 12 Aug 2004 (UTC)
- That's fine with me. Make sure that you do describe the percieved advantages and drawbacks of Scheme, especially compared to other dialects of Lisp (since its advantages and drawbacks as a whole are largely those of Lisp). It may also be interesting to explain how the drawbacks are addressed. ---- Sam 20:42, 13 Aug 2004 (UTC)
Toki Pona?
I am not the one who originally deleted the link to Toki Pona, but after checking it, there is no Scheme code on that page contrary to what the section title claims. In fact it does not have anything to do with Scheme. Therefore I have removed the link. Is there any good reason to link to that article that I have missed? Sam 04:47, 27 Aug 2004 (UTC)
Disjointness of types
A point: while the current scheme standards assert that the types are disjoint, and in particular that #f and '() are distinct, this has only been the case since the IEEE standard and R4RS. R3RS permitted these two to be the same, and MIT scheme had this equality. This comment is provoked by this edit. ---- Charles Stewart 14:54, 15 Oct 2004 (UTC)
outdated?
"The Scheme community is highly fragmented, with dozens and dozens of implementations, and without a dominant implementation it has proven difficult to focus developer support on providing adequate libraries for practical work. (For example, Python has over 100 extension libraries written in C, and many more in pure Python.)
For this reason, Scheme is often considered to be a "toy" language, unsuited for production use since too much time is needed to re-invent the wheels, though one very well suited for educational purposes. A dominant, open source implementation is badly needed to remove this stigma."
Really? There's PLT and Chicken, among others very high quality free implementations. I'd pick Chicken over Python any day of the week. "filesystem access, a socket interface, HTML processing," all these are readily available these days.
I can agree that there needs to be some disadvantages listed but all of the listed things are things that are currently false, since:
- The SRFI's have been successful
- There are adequate libraries for practical work
- Scheme isn't just a toy language (even though it's often viewed as one)
The namespace thing.. yes, some people do see that as a disadvantage; others see it as a huge advantage. A short note should be made that these two sides exist, with discussion moved to another page.
Real disadvantages:
- has a reputation as a toy language - even if it's not one, that's the reputation
- is very different from mainstream algol-like languages (it's imho easier, but opinions differ on that)
- is popular with academia and cs and other hopeless geeks
maybe CL-folks could list some disadvantages that scheme has? otoh I've never seen any CL folks with a good understanding of scheme.
- I dropped the latter offending paragraph, since it was accusatory, POV, and not in encyclopedic style. (It is not Wikipedia's business to tell other people what is "badly needed".) Please feel free to contribute accurate information directly to the article -- be bold in editing. :) --FOo 01:33, 7 Mar 2005 (UTC)
This article should mention SIOD.
cryptic tail-recursive factorial example
Hi, I was just reading the article out of curiosity. I really liked most of the article and actually became interested in learning the language. I don't know how to program in scheme or any lisp dialect for that mater. I am not a CS but am not computer illeterate either. I program in other languages like C, Objective-C, perl, and php just for fun. I was trying to follow the tail-recursive example and was completely unable to do it and I don't feel is my fault. I believe that a few comments on the code and perhaps explaining what do the "let loop" expression and the "do statement" do instead of vaguely mentioning that they are "syntactic sugar" could help. I would write them myself but as I said, unfortunately I don't know how to program in scheme.
I don't know the specifics of the rest of the discussion, but I really liked the article aside from these rough edges, Good Job!!
- The "named
let
" form sets up a local subroutine, here calledloop
. This routine has two local variables, calledfact
andn
. (I'd call themtotal
anditer
or some such, but whatever.) Inside this subroutine, you can think of a tail-call toloop
as just a GOTO back up to the top of the namedlet
, only with these variables modified.
- One of the lessons to learn from Scheme is that if you can assume tail-call optimization, then a tail-recursive call is just a GOTO with arguments, and is just as efficient (while still being a lot more readable). --FOo 05:23, 21 Jun 2005 (UTC)
- I just cleaned up (IMHO!) the examples a little. What do you think now? --FOo 05:41, 21 Jun 2005 (UTC)
Historical revisionism
Isn't the following claim in the 1st paragraph of the article (boldface mine) revisionist?
- Scheme is a functional programming language and a dialect of Lisp. It was developed by Guy L. Steele and Gerald Jay Sussman in the 1970s initially as an attempt to understand the Actor model and introduced to the academic world via a series of papers now referred to as Sussman and Steele's Lambda Papers.
From Structure and Interpretation of COmputer Programs, available online [1] the most complete historical account that I was able to find on a moment's notice follows:
- Scheme, the dialect of Lisp that we use, is an attempt to bring together the power and elegance of Lisp and Algol. From Lisp we take the metalinguistic power that derives from the simple syntax, the uniform representation of programs as data objects, and the garbage-collected heap-allocated data. From Algol we take lexical scoping and block structure, which are gifts from the pioneers of programming-language design who were on the Algol committee. We wish to cite John Reynolds and Peter Landin for their insights into the relationship of Church's lambda calculus to the structure of programming languages. We also recognize our debt to the mathematicians who scouted out this territory decades before computers appeared on the scene. These pioneers include Alonzo Church, Barkley Rosser, Stephen Kleene, and Haskell Curry.
I have been unable to document the claim that scheme is in some way indebted to the actor model (I have two refereneces Kent Dybvig's book and Abelson and Sussman. I find the claim strange, since I have used scheme and T and recognize its heritage, but the actor model I didn't think was one of the predecessors, particularly of such prominence. I will believe the claim, however, if someone provides a reference. --CSTAR 21:19, 10 July 2005 (UTC)