Category talk:Racket

From Rosetta Code
Revision as of 15:05, 26 November 2011 by rosettacode>EMBee (→‎racket IS scheme: how different are the racket solutions really?)

racket IS scheme

Racket is a language from the Scheme family. lest we give every scheme language a separate category they should all be categorized under Scheme

this page should be renamed from Category:Racket to Racket, but i am not doing that now because i am not sure how that affects all the racket solutions. they may need to be moved to scheme first.--eMBee 07:54, 9 November 2011 (UTC)

There is some ambiguity about this. At which point does something become a separate language vs an implementation of the same language? Can the makers of an implementation simply decide that it is a new language? From what I hear, there are some incompatibilities between Racket and Scheme. Wikipedia currently calls Racket a programming language: http://en.wikipedia.org/wiki/Racket_(programming_language) which it does not do for other implementations of Scheme. Many questions on StackOverflow simply say "Racket" without mentioning "Scheme". --76.21.41.59 09:44, 9 November 2011 (UTC)
Scheme is defined here in form of reports. the latest of which is R6RS. Racket implements R6RS.
as for your question i think for rosettacode the answer may be different than for other places. i think it is beneficial to have all scheme dialects in one place for easier comparison.--eMBee 10:15, 9 November 2011 (UTC)
Racket's documentation, at Dialects of Racket and Scheme, claims that Racket and R6RS are different dialects: "beware that the syntactic forms and functions of R6RS differ from Racket."
it also says that racket is based on the scheme branch of lisp, meaning that racket is a dialect of scheme. the same claim is made by other scheme implementations.--eMBee 06:19, 10 November 2011 (UTC)
[1] has more details about the relationship between racket and scheme.--eMBee 06:38, 10 November 2011 (UTC)
Among the contributors to Rosetta Code, the authors of Racket and Scheme examples should decide whether Racket is Scheme, or Racket is a separate language. A page like 24 game should not have a Racket section and also, at the same time, have "PLT Scheme" in its Scheme section.
Rosetta Code removed "Category:Bash" and "Category:Korn Shell", because those are implementations of Category:UNIX Shell, not separate languages. I am currently emptying "Category:Zsh" for the same reason. This is good because I can write one program at Primality by trial division#UNIX Shell to work with Bash, Korn Shell and Z Shell. However, I also created Category:C Shell as a separate category. I still want to group C Shell with UNIX Shell, so I always put a subsection ==={{header|C Shell}}=== under section =={{header|UNIX Shell}}==. --Kernigh 04:54, 10 November 2011 (UTC)
i like that approach. it would certainly work for racket if people think that racket needs its own language entry (i am not convinced of that yet). ideally i'd go even further and group all lisp implementations that way, but that may not be practical with the current structure in rosettacode. (and it would be a lot of work for little gain)
one thing that also speaks against the racket category is that it is only recently renamed from plt-scheme. i doubt anyone would even consider plt-scheme to not be scheme. but if plt-scheme is scheme, then racket must be as well. (unless they changed the language and racket is incompatible to plt-scheme)--eMBee 06:19, 10 November 2011 (UTC)

Racket goes well beyond what other Scheme implementations offer. The difference itself is much bigger than the whole spec of a large language like common lisp. Furthermore, while it is a descendant of "Scheme", it diverged considerably -- to a point where moving code back and forth from Racket to other Schemes requires *porting*. (Note that this does not contradict having R6RS implemented -- it is just a language among many that are implemented in Racket, but in fact it is not used for any of the functionality that comes with Racket.) To make things more concrete, I went over some of the pages in the Category:Racket page -- that addresses the more important question of what would people get from having the racket solution be listed as "Scheme". From the 18 solutions, I counted exactly one (Accumulator factory) which would work in all Schemes, and another (Dot product) that might work on some since it relies on features that are not guaranteed by the standard (and by many implementations). The rest are all pieces of code that have no hope to ever work in any other scheme.

thank you, that is very helpful. by no hope do you mean the code in present form (without changes) or do you mean that even small changes would not be enough to make it work in other schemes? in other words, accepting that the solutions are different from standard scheme, how different are they really? --eMBee 15:05, 26 November 2011 (UTC)