This simple question requires a non-trivial answer. The bottom line is "commit to the language that you think is stable, rich enough in terms of libraries, has a helpful user community, and so on".
The justification is quite long. As much as you might wish to port Scheme programs, this just isn't possible without committing to some uncertainty and/or a much more restricted programming style than you think you need. For example, the Scheme standard does not commit to an order of evaluation in applications. So, even a functional expressions (no set! etc) such as (f Exp1 Exp2 Exp3) does not guarantee what kind of arithmetic exception you get if something should happen deep in the guts of one of the three Exp. For one way to find the right portability, see Dorai Sitaram's article in the Boston Scheme workshop from 7 or 8 years ago. In the end, he basically defines a new language and supplies macros that expand it properly into each dialect plus Common Lisp. The latter may surprise you but portability among Schemes back then was so bad that throwing in CL wasn't a big deal. Next, while r6rs gives you a decent amount of modularity and libraries, you will need to write your program so that it prints its results and reads its inputs. Relying on the implementation-provided read-eval-print loop and its read and printing style probably won't do it. In your example below, you are running into this already. BUT, when you have to go beyond the rather small language of r6rs -- do not let people distract you who think it is large -- you are facing the final problem, namely, how to pull in libraries for the real uses of a language: GUIs, portable GUIs, scientific libraries, or arbitrary code repositories with contributions from the community. Last but not least the syntax system of each r6rs is rich enough to tempt you into non-portability and then you're totally stuck. It is for all these reasons that we decided to forgo Scheme-ness and turn Racket into an independent member of the Lisp family with inspiration taken from some of the Scheme reports. Racket's goal is to help programmers [1] produce programs quickly -- with rich libraries -- easily portable from machine to machine -- because of a platform independent GUI library -- and to lend a helping hand as quickly as possibly -- with a highly responsive user mailing list. -- Matthias [1] Knowing existing Scheme and Lisp idioms makes life easy, nothing familiar has a radically different semantics. But knowing these languages is not a prerequisite. On Jul 14, 2012, at 12:51 AM, Rouben Rostamian wrote: > Here is the entire contents of a file named tryme.rkt: > > ;;----------------------------- > #!r6rs > (import (rnrs base) > (rnrs sorting (6))) > ;;----------------------------- > > I start up racket from the command-line (non-gui) and type: > > (enter! "tryme.rkt") > (list-sort < '(4 2 7 1)) ; note: list-sort is from R6RS's sorting library > > This produces: > > (mcons 1 (mcons 2 (mcons 4 (mcons 7 '())))) > > Is there a way to get a plain (1 2 4 7) representation? > > Aside: My objective here is to limit Racket to R6RS in the > hope that my code will be portable to other platforms that > implement R6RS. If this is not the right way of going > about it, please let me know > > -- > Rouben Rostamian > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users