3

Not really a question as such in here regarding Smalltalk and Scheme. I only started playing in Smalltalk 3 weeks ago and have been bouncing between Squeak and Pharo. Both are amazing its hard to think to me smalltalk isn't the most popular language going. Everything is in the one image I don't need an interactive command prompt an editor a web page for Rdoc etc I just do it click it mess around, heck if I do UiDesigner Open. I get a GUI app close to QT4. There are database utilities for my small databases like magma.

Anyway, I also started to play with Scheme in Racket and though there are a lot of () involved it still had a lot of simplicity; it seems to be quite logical from the get go. The only thing I am finding is that there are a lot of scheme/Lisp dialects. Racket seems to be quite an easy environment as well, however, notably, there seems to be Chicken and MIT Scheme.

Is there a particular reason I should be using Chicken over Racket or MIT? Or Vice Versa. Good System support, Database or GUI support...etc.

PS I am clearly not picking the most popular languages but I am having fun :-)

Sean DeNigris
  • 6,306
  • 1
  • 31
  • 37
sayth
  • 6,696
  • 12
  • 58
  • 100

2 Answers2

5

Both Racket and Chicken have good library support. (GUI, database, networking etc). If you are just having fun, I suggest you go with Racket. It has full support for the Scheme standards (R5RS, R6RS) and good documentation. There are a few good programming books that use Racket as the implementation language. On the other hand, if you are looking for portability of your compiled code across a wide assortment of hardware, Chicken might be better than Racket.

Vijay Mathew
  • 26,737
  • 4
  • 62
  • 93
1

If R6RS is important to you, go with Racket. Chicken(among others) is not and will not be R6RS compliant, as there is a widespread perception that it is flawed. R7RS is being worked on and should address some of the concerns. As far as R5RS compliance goes, Chicken tries hard to stay in the standard (there are two pages in the manual listing differences). Racket is different enough that it shed the "Scheme" name a while ago.

That said, my preference lies with Chicken. Chicken's FFI is fantastic (even more so with the Bind egg). As it is compiled to C, interfacing with C libraries is a breeze. I have even added some of Chicken's runtime source files (a process documented in the manual) directly into an iPhone application I am working on, along with Scheme code translated to C, it works like a charm. There's no need to create a cross-compilation environment that way, as it is all C and compiled by XCode.

Chicken has a lot of eggs and growing every day. I suggest checking out the eggs page link text to see if it has what you need. If so, I strongly suggest giving it a try.

Stephen Eilert
  • 1,527
  • 1
  • 17
  • 17
  • I was checking out chicken, and started reading the elevator pitch. One part caught my attention. "Works with third-party libraries written in C, C++, Java, Python, and Lua. Support for major databases." How does chicken work with third party libraries? – sayth Dec 28 '10 at 10:53
  • Third-party libraries written in C and C++ are easy to integrate using the awesome FFI interface. Interfacing with Java, Python and Lua is done by using some of the available eggs. I am not sure how each one of them work, technically. – Stephen Eilert Jun 22 '11 at 18:11
  • Cpython libraries are mostly C dlls with some python modules – Kilon Aug 21 '12 at 22:34