Introduction
Chicken is an implementation of the Scheme programming language that compiles into C code. It is one of several existing Scheme implementations. Chicken, unlike some others of its family, also comes with a library management system similar to RubyGems or NPM where modules are called Eggs.
Installing Chicken
Most Linux systems either come with or have pre-existing packages.
For MacOS X, both MacPorts and Homebrew have packages.
There are also binary releases for Windows. However, as of this, writing, the only recommended build is available from Chocolatey, which will require additionally installing that package manager software.
Example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; A simple "Hello, World!" | |
(print "Hello, World!") |
Using Chicken as a Scripting Language
Chicken comes with a Chicken Script Interpreter (CSI) that can be run using its initial: csi. Without any other arguments, it will open a read-eval-print loop (REPL) where code can be written and executed line-by-line. More usefully to most situations, it can be run with its “-s” (to interpret and run) or “-ss” (which expects a defined ‘main’ to which it will pass arguments sent to it).
With the above file saved as “hello.scm”, it can be run as an interpreted language using
csi -s hello.scm
This will display the results of “Hello, World”.
The manual goes into greater depth on different options.
Using Chicken as a Compiled Language
A compiler* is also part of the Chicken installation. Named “csc”, it can be accessed through the same name. By default, it will compile the
csc hello.scm
*Binary installations of Chicken will require that a C compiler also be installed on the system in order to run properly. This will also be required for the use of Eggs.
The manual also goes into greater depth on different options for compiling modules or creating code to be dynamically loaded.
Installing and Using Eggs
Additional modules, called “eggs” in Chicken, can be installed using the “chicken-install” command-line tool.
chicken-install egg-name
Once installed, Eggs can be used through the “require-extentsion” procedure. Before using any of the named procedures or symbols, include an egg like the following:
(require-extension egg-name)