chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] Re: #32: get tinyclos egg for chicken 4 to work


From: Chicken Trac
Subject: [Chicken-janitors] Re: #32: get tinyclos egg for chicken 4 to work
Date: Thu, 05 Nov 2009 12:39:35 -0000

#32: get tinyclos egg for chicken 4 to work
------------------------+---------------------------------------------------
 Reporter:  felix       |       Owner:       
     Type:  defect      |      Status:  new  
 Priority:  major       |   Milestone:       
Component:  extensions  |     Version:  4.0.5
 Keywords:  tinyclos    |  
------------------------+---------------------------------------------------

Comment(by tonysidaway):

 I've already looked at the possibility of a clean start--in the sense of
 beginning with an unhacked copy of tinyclos and taking it from there.

 ftp://ftp.parc.xerox.com/pub/mops/tiny/

 The code, alas, is more than 15 years old, pre-IEEE, and no longer even
 runs on the systems for which it was originally developed.

 This is what happens when I run a really old version in MIT Scheme:

 Image saved on Thursday March 12, 2009 at 4:17:10 AM
   Release 7.7.90.+ || Microcode 15.1 || Runtime 15.7 || SF 4.41 ||
 LIAR/i386 4.118 || Edwin 3.116

 1 ]=> (load "tiny-clos")

 ;Loading "tiny-clos.scm"...
 ;  Loading "support.scm"... done
 ;... done
 ;Value: tiny-clos-up-and-running

 1 ]=> (load "tiny-examples")

 ;Loading "tiny-examples.scm"...
 ;The object #f, passed as the first argument to set-cdr!, is not the
 correct type.

 I suspect the problem there is that the code relies on old MIT Scheme
 semantics.

 For what it's worth, the only set-cdr! in the code is in compute-getter-
 and-setter in tiny-examples.scm.  MIT Scheme is apparently barfing on
 this:

 (let* ((alist (alist-getter o))
        (entry (assq name alist)))
    (if (null? entry)
     (alist-setter o
       (cons (cons name new) alist))
     (set-cdr! entry new)))

 In this instance obviously the problem is that the code is using the null?
 predicate when it should be testing for a true/false response from assq--
 this is typical of the ambiguities of pre-IEEE Scheme, I believe.

 This particular bug is easily fixed, but obviously the code would have to
 be very carefully scrutinized.

-- 
Ticket URL: <http://www.irp.oist.jp/trac/chicken/ticket/32#comment:7>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]