Mailing List Archive: 49091 messages
  • Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

[REBOL] Re: [subject: first-class language]

From: joel:neely:fedex at: 11-Mar-2002 20:13

Hi, Pat, pat665 wrote:
> On Wednesday, 12-sep-2001, Holger Kruse wrote : > > "Rebol is a first-class language ..." > > > > What is a first-class language ? >
Good question. Perhaps it is intended to convey the notion that all data types are first class types??? (Ladislav has already written effectively on the degree to which this is completely accurate.) I've seen the adjective phrase "first class" in computing science literature used to describe data types; a "first class type" has all of the rights and priveleges of any other data type, such as being able to be passed as a parameter to a function, returned as the value of a function evaluation, stored in a variable or data structure, etc. For example, see that phrase in the description of Pop-11 at: http://www.cs.bham.ac.uk/research/poplog/primer/node93.html#SECTION00071000000000000000 (mind the wrap!) For another example (of someone correcting a misuse of the term) see these on-line citations from 1992: http://compilers.iecc.com/comparch/article/92-02-090 http://compilers.iecc.com/comparch/article/92-02-092 http://compilers.iecc.com/comparch/article/92-02-093 http://compilers.iecc.com/comparch/article/92-02-096 The same usage occurs in the Mjolner pages describing the Beta language, at: http://www.mjolner.com/mjolner-system/beta_en.php in the following context: BETA includes the notion of pattern variable. This implies that patterns are first class values, that may be passed around as parameters to other patterns. Suresh Jagannathan, of the Yale University Department of Computer Science, published a paper under the title: Optimizing Analysis for First-Class Tuple-Spaces whose abstract begins: Abstract: This paper considers the design and optimization of a simple asynchronous parallel language that uses first-class tuple-spaces as its main communication and process creation device. Our proposed kernel language differs from other tuple- space languages insofar tuple-spaces are treated as true first- class objects. The full citation is available at: http://citeseer.nj.nec.com/jagannathan90optimizing.html The Revised**5 Report on the Algorithmic Language Scheme states in its introductory section: Scheme was one of the first programming languages to incorporate first class procedures as in the lambda calculus,... The published report on Objective Caml, at: http://caml.inria.fr/ercim.html also uses the concept: As all dialects of ML, Objective Caml possesses: First-class functions: functions can be passed to other functions, received as arguments or returned as results. ... and so on. As far as the phrase "first class language" is concerned, a Google search seems to reveal that it is primarily used in the colloquial sense of "high-quality" or "legitimate" or "capable of standing on its own", as in this editorial from the "Visual Basic Programmer's Journal" http://www.devx.com/premier/mgznarch/vbpj/2001/03mar01/en0103/en0103.asp which proclaims thusly: To its credit, Microsoft acknowledges that creating a first-class language for VB developers also means creating first-class documentation for the tool. But VB's help files have never been the tool's primary strength. or the (slightly less marketspeak-sounding) description of BML on the IBM AlphaWorks site, which says in part: it allows one to capture the inter-component structure of the application using a first-class language designed for that purpose and yet be able to compile it into 'regular' Java code with basically no performance loss. where, again, the colloquial sense seems to be that BML is not simply a markup or documentation language to describe Java Beans, but a language capable of actually being used to write code. Similar (slightly more marketspeak-sounding) descriptions from various sources promise that both Visual Basic and COBOL will be a first-class language on the Microsoft .NET Framework (implying that they might be as good as Visual C++, I suppose). I certainly hope all of us agree that REBOL is at least as good as COBOL, Visual Basic, or C++! ;-) -jn- -- ; sub REBOL {}; sub head ($) {@_[0]} REBOL [] # despam: func [e] [replace replace/all e ":" "." "#" "@"] ; sub despam {my ($e) = @_; $e =~ tr/:#/.@/; return "\n$e"} print head reverse despam "moc:xedef#yleen:leoj" ;