11 ms·
An opinionated guide to Scheme implementations (2013)
- deleted 12y ago[deleted]
- davexunit 12y agoThis is a really great little guide for people that want to try out a Scheme but are paralyzed by the options. This will help those in need find a starting point. I highly recommend GNU Guile, the implementation that the author co-maintains.
- a8da6b0c91d 12y agoGuile and its entire library ecosystem is GPL infected. I'd choose to pay the Chez scheme guy before having to worry about copyleft implications.
- dharmatech 12y agoChez Scheme is not currently available for purchase. This has been the case since it was aquired by Cicso Systems.
- hga 12y agoYikes! That would explain why the language's site is still Copyright 2011 Cadence Research Systems. Apparently Cisco bought Cadence, and Chez Scheme fell through the cracks. Ugh. As far as I know, perhaps not counting the 2 JVM Schemes, it was the only one that provided OS level non-green threads.
- _delirium 12y agoI've never used it myself, but fwiw Gauche also advertises support for native threads. SRFI-18 threads are wrapped around pthreads on Unixy platforms, and Windows threads on Windows. http://practical-scheme.net/gauche/man/gauche-refe_106.html http://practical-scheme.net/gauche/man/gauche-refe_106.html
- hga 12y agoAh, I was not clear enough: native SMP threads, as in each thread accessing the same shared memory heap. Gauche allocates a new VM for each thread ... ah, but I see it has data synchronization primitives. I believe it has moved forward since the last time I checked it, years ago. Thanks for the tip! Repeated from the other reply on Guile: Hmmm, now I'll have to narrow the statement to "The only native code compiling Scheme that I know of" (which is harder to do).
- davexunit 12y agoAFAIK, Guile's threads are native.
- hga 12y agoBut it has RMS/GNU/FSF cooties! If you play Philip Glass' Einstein on the Beach while using it, it will not be happy! (We were roommates when he launched the GNU project, and he did not like that title, it would wake him out of a sound sleep. Which, if you've listened to it, is perfectly understandable, it's very minimalist, an acquired taste he did not share :-). Hmmm, so it does, and as suiting its niche, at a low level. See above WRT Gauche; from a skim of the manual, Guile's VM may be reentrant or it hides that level of detail. Thanks for the tip! Hmmm, now I'll have to narrow the statement to "The only native code compiling Scheme that I know of" (which is harder to do).
- davexunit 12y ago>now I'll have to narrow the statement to "The only native code compiling Scheme that I know of" Native compilation is on the roadmap for Guile, so hopefully you'll have to narrow that statement further in a couple of years. :)
- cbd1984 12y ago> it would wake him out of a sound sleep In that state, I'm pretty sure most people prefer Cage.
- omaranto 12y agoA bit of googling turned up this pricing sheet where Chez Scheme is listed on page 88 (it says $65 per unit or $325 for 10, so buy your Chez's in bulk!): http://www.centurylink.com/business/asset/channel/cisco-us-global-price-sheet-pricing3-pr120538.pdf http://www.centurylink.com/business/asset/channel/cisco-us-g...
- hga 12y agoFrom whom can you go to buy a copy, and is it still under development? The web site doesn't look like it's been touched since 2011, and Google searches constrained by site:cisco.com turn up nothing. Other searching showed no signs of life.
- davexunit 12y agoYour comment sucks, but let me just correct something: Guile uses the LGPL, note the 'L'.
- dang 12y ago> Your comment sucks Please don't do this on HN. Even if it's true, the health points it knocks out of the discourse are more valuable than the truth that it adds. The thing to do with comments that suck is downvote them. If you have a factual correction to add, that's great, but let it stand on its own. ("Guile uses the LGPL, note the 'L'." is just fine.)
- davexunit 12y agoYou're right. Got carried away.
- yarrel 12y agoGuile is awesome. I wrote a graphics editor that uses it.
- davexunit 12y agoI would love to see that.
- leoc 12y agoI would hesitate to call DrRacket "excellent".
- deleted 12y ago[deleted]
- thirteenfingers 12y agoWhat specifically are your reservations? - I haven't played around with many Scheme implementations besides DrScheme/DrRacket so I'm not questioning your judgement, I'm just genuinely curious.
- nsajko 12y agoBloat?
- gus_massa 12y agoYou mean "batteries included"? :) [Disclaimer: I also like the idea of RSR7S small.] Just now there is a major reorganization in the Racket repository. The idea is to split it in a core part and may small packages. The objective is one day having many installers. For example one with only the minimal support for racket, one with everything including the kitchen sink, ...
- samth 12y agoWhile indeed we are doing a major refactoring of the repository, the split into many packages has already happened. And you can download the Minimal Racket installer today!
- coldtea 12y agoYou'll have to be more specific. Bloat is a content-less word for software. Most naive users complain about "bloat" for stuff like program file sizes on disk, not knowing that most of it is assets (icons, etc). Others think that having two many options in the menus, features etc slow the program down, not realizing that in most programs stuff is run and loaded dynamically, and a features you don't use don't affect the speed at all. Others yet think that only 20% of the features is needed (those that THEY use, of course) ignoring the fact that while a core set of features is common to all users, a large part of them are in non-overlapping set. E.g.: "Who needs a word-counter in Word?" -- well, if you're a journalist, it's your #1 more useful function.
- fspeech 12y agoWhat about implementing your own Scheme or Lisp if you want to embed an interpreter for your C/C++ project (the first scenario discussed in the blog)? I recently decided to roll my own Prolog interpreter for my project. With C++11 and shared pointers it is really a breeze (of course I've thought about doing this for a long time so the actual implementation part was smooth sailing but not the only story). The advantage of rolling my own: 1. No GC. Ref counting is sufficient for my own use. 2. Integrating with the C/C++ libraries I want to use is a lot easier. I designed my implementation for the purpose of embedding in my project and gluing libraries.
- username223 12y ago> What about implementing your own Scheme or Lisp if you want to embed an interpreter for your C/C++ project (the first scenario discussed in the blog)? I've done this for a Java project many years ago, where it sort of grew out of a config file format, as so many Lisps do. I would probably take the trouble to add a standard embeddable interpreter if I did it again. Otherwise, you end up with yet another 80%-ass Scheme with its own quirks and no libraries, and the world has too many of those already.
- fspeech 12y agoI think it comes down to which is harder: 1) adapting your native libraries to a standard implementation or 2) adapting your implementation to your own libraries I decided that I mainly want Prolog to interact with, not to write a large amount of code in. So for me 2) was more advantageous.
- fspeech 12y ago"no libraries" I forgot to emphasize that this is not a real problem. You will likely have good C/C++ libraries for most things. The real issue really is to expose these libraries to your embedded language on a as-needed basis. To me the effort is better spent in creating my own targeted solution that makes interfacing easier and that is under my control than learning the minutia of the FFI of a third party implementation, after taking into account the following: 1) we are talking about effort on the scale of one or a few KLOC to roll one's own, and comparing that against the effort needed to truly master the FFI of a third party implementation; 2) my interface is no longer limited to the lowest denominator that a standard implementer would face (e.g. most use C but I can use multiple inheritance and templates of C++ to make the interfacing a lot easier); 3) supporting FFI users is typically not the highest priority on the standard implementers' agenda (if there is any support at all).