diff options
Diffstat (limited to 'sc4sc3.scm')
-rw-r--r-- | sc4sc3.scm | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/sc4sc3.scm b/sc4sc3.scm new file mode 100644 index 0000000..a120c5d --- /dev/null +++ b/sc4sc3.scm @@ -0,0 +1,35 @@ +;"sc4sc3.scm" Implementation of rev4 procedures for rev3. +;Copyright (C) 1991 Aubrey Jaffer +; +;Permission to copy this software, to redistribute it, and to use it +;for any purpose is granted, subject to the following restrictions and +;understandings. +; +;1. Any copy made of this software must include this copyright notice +;in full. +; +;2. I have made no warrantee or representation that the operation of +;this software will be error-free, and I am under no obligation to +;provide any services, by way of maintenance, update, or otherwise. +; +;3. In conjunction with products arising from the use of this +;material, there shall be no use of my name in any advertising, +;promotional, or sales literature without prior written consent in +;each case. + +;;;; peek-char, number->string, and string->number need to be written here. + +;;; APPEND, +, *, -, /, =, <, >, <=, >=, MAP, and FOR-EACH need to +;;; accept more general number or arguments. + +(define (list? x) + (let loop ((fast x) (slow x)) + (or (null? fast) + (and (pair? fast) + (let ((fast (cdr fast))) + (or (null? fast) + (and (pair? fast) + (let ((fast (cdr fast)) + (slow (cdr slow))) + (and (not (eq? fast slow)) + (loop fast slow)))))))))) |