On Sat, Dec 29, 2018 at 1:48 PM Tomasz Rola <rto...@ceti.pl> wrote: > Where does Racket belong? I understand Racket community no longer > considers themselves as part of Scheme landscape, but I am unable to > say where I get this impression from. If I am wrong, then the first > thing for anybody willing to contribute to R* success would be to make > their blog being displayed on Scheme Planet (IMHO). If I am right (R* > not Scheme), then this is a pity.
There's much to discuss here, and much of it would start to get off-topic for this thread, but I can give a few facts for the record. Racket is a language in the Scheme branch of the Lisp family. Racket includes implementations of the R5RS <https://docs.racket-lang.org/r5rs/index.html> and R6RS <https://docs.racket-lang.org/r6rs/index.html> Scheme languages, and programs/libraries written in those languages can interoperate with code in other Racket languages, but the main Racket language isn't Scheme. Racket is both more than and different from the languages specified by any of the Revised Reports in numerous ways, ranging from immutable pairs and guaranteed left-to-right evaluation to the large standard library, cutting-edge macro system, and multi-lingual programming support (which enable those implementations of R5RS and R6RS), to name just a few. The Racket language evolved from PLT Scheme: a blog post <https://racket-lang.org/new-name.html> gives more of the rationale for the change, but basically it's called something different because it is something different. That said, Schemers are still some of Racketeers' closest relatives: there is ongoing work to implement Racket in Chez Scheme, and you will find some of the creators of Racket listed on the cover page of R6RS. Right now I am willing to write some scripts, with intention to run > them both on Linux and OpenBSD. A kind of stuff that is normally > written in Perl. … This means I will have to have source at my hand, just > install *BSD, > compile Gauche, install my scripts, ready to go, before any network is > up I mean. > > Does Racket match such a use case? I can compile it from sources > … but I wonder if it will > compile in a very limited, rugged environment - no network connection, > just what was there in base install (with C compiler, of course). I > might try one day, but it seems Gauche has less dependency on outside > packages than R*. > Racket can certainly do this. You do not need a network connection either to compile Racket itself or to compile code written in Racket (provided, of course, that you have all of the sources you need). On (non-Mac) Unix-like systems, Racket does by default use some shared libraries (e.g. for GUI stuff) that it expects to be installed via the OS package manager, but "Minimal Racket does not require additional native libraries to run" <https://github.com/racket/racket/blob/master/INSTALL.txt>, and you can configure things so that these are bundled with Racket instead. Also, if you prefer, Racket can compile your scripts into stand-alone executables, so you could just deploy the binaries if that simplifies things. > Like, I write a program > and hope it will keep working for the next few years without much work > (other than bug fixing). Thus, language stability is important to > me. Or backwards compatibility. Or at least knowing I can switch to > alternative implementation, should I ever feel such necessity. > Being concerned about backwards-compatibility is very reasonable! Others can speak more to their actual experience, but the Racket developers take compatibility very seriously, and I've heard of people running quite old code with the latest releases of Racket. Read through the documentation and you will see lots of evidence for this in various APIs: for example, `#lang scheme` still runs PLT Scheme programs from before the name change. The Racket (PLT Scheme) project started in 1995 and has been publishing regular releases for decades, so the possibility of abandonment seems vanishingly small. As far as I can see it, Racket contributes to fragmentation of Scheme > scene (which is already a "everybody tends for oneself" kind, > AFAICT). Since, as noted, Racket is a different language than Scheme, this becomes rather like saying that C++ contributes to fragmentation of C implementations. > There is no clear message if there is way to run in R* a code > developed with other Schemes or vice versa and a very minimalistic > effort to portability in a form of slib library is not going to work > in R*, am I right? > The Racket Guide <https://docs.racket-lang.org/guide/dialects.html> points you to how to run pure R5RS and R6RS code in Racket: did you not see this, or was it not sufficiently clear? (Of course, writing practical programs in pure portable RnRS Scheme is hard, but I don't think it's harder in Racket's Scheme implementations than in others.) Racket also comes with implementations of many SRFIs <https://docs.racket-lang.org/srfi/index.html> . > Another niche for which I would like to consider R* is mobile apps > (i.e. for smartphone). But, is it possible to do such thing, actually? > Jay McCarthy has ported Racket to Android: https://github.com/jeapostrophe/racket-android It should be possible to do likewise for iOS, but I don't know of anyone who's done it yet. > For this, Racket has to be more interoperable. Can it replace Java? > Can it work with Java libraries? > Racket doesn't (currently) run on the JVM, so it doesn't use Java libraries. It does have a great C FFI, which Racket itself uses to implement the back-ends for its cross-platform GUI library. > Python has an excellent "batteries included" motto. … > Something which can talk to and make use of existing Python, > Perl, Ruby code? Open up a spreadsheet, read data, feed it to Python > library, write back results. … utilities/system > programming and/or stuff like reading and manipulating data in files, > databases and spreadsheets … And showing some controls for mouse. > Not only can Racket do all of these things, I personally do essentially all of them. "Batteries included" is written right at the top of Racket's website <https://racket-lang.org/>. The main distribution comes with a package for working with many databases <https://docs.racket-lang.org/db/index.html>, and other packages add support for others <https://docs.racket-lang.org/mongodb/>, as well CSV spreadsheets <https://docs.racket-lang.org/csv-reading/index.html>. I have been using Racket to run Python programs under its control and talk to them via standard IO in formats like JSON. I even use Racket's `raco setup` tool to manage the Python dependencies, and I'm working on integrating the Python docstrings into Racket's Scribble documentation. In Racket itself, I maintain a cross-platform (Windows, Mac, and GNU/Linux) GUI app, a server-side web application (including proxies and virtual hosts managed from within Racket), and various utilities for managing a large corpus of XML documents. The Racket language has compelling features (e.g. continuations, contracts, green threads, DSLs) that make it more effective and productive for my purposes than any other language I've encountered. -Philip -- You received this message because you are subscribed to the Google Groups "Racket Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to racket-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.