This is a page that should serve as a list of hacks people have created for scheme48 itself, intended for review by the Scheme48 maintainers, and code that is written (specifically) for scheme48.

Implementation hacks

Rotty maintains a branch of the current scheme48 stable version (1.3) into which he integrates code he deems useful. The intent is that this code will be integrated upstream eventually.

Branch: scheme-48--integration--1.3

To get it you can use ((baz)) and run:

baz get scheme-48

The changes include:


s48-worlds is an idea to implement system like PLaneT for Scheme 48.


scheffig, the Scheme 48 Foreign Interface Generator.

Library code

Improved hash tables

Object dumper

A PLT-like FFI

This (currently) needs the patched version of scheme48, the code is available as a tarball. Also see scheme48-ffi-tng.

File-related functions

 ;;; Copyright (c) 2005 Andreas Rottmann, BSD licence 
 (define (copy-file old-file new-file) 
   (let* ((old-info (get-file-info old-file)) 
          (old-port (open-file old-file (file-options read-only))) 
          (new-port (open-file new-file (file-options write-only create truncate) 
                               (file-info-mode old-info))) 
          (buf-size 4000) 
          (buffer (make-byte-vector buf-size 0))) 
     (let loop () 
       (let ((n (read-block buffer 0 buf-size old-port))) 
         (cond ((not (eof-object? n)) 
                (write-block buffer 0 n new-port) 
     (close-input-port old-port) 
     (close-output-port new-port))) 

This function is available via Spells.