;;; -*- mode: scheme; scheme48-package: (config) -*- ;;;; TRC's Scheme48 Utilities ;;;; Package Definitions ;;; This code is written by Taylor Campbell and placed in the Public ;;; Domain. All warranties are disclaimed. ;;;; Alternative Record Type Definition Macro (define-structure define-record-type* (export (define-record-type* :syntax) define-record-discloser) (open scheme define-record-types) (for-syntax (open scheme define-record-type*-expander)) (begin (define-syntax define-record-type* expand-define-record-type* (BEGIN DEFINE DEFINE-RECORD-TYPE)))) (define-structure define-record-type*-expander (export expand-define-record-type*) (open scheme destructuring fluids signals receiving) (files defrectype)) ;;;; Random Randomness (define-structure coin-flipping (export flip-coin) (open scheme srfi-27) (optimize auto-integrate) (begin (define (flip-coin) (zero? (random-integer 2))))) ;;;; Skip Lists (define-interface skip-lists-interface (export make-skip-list skip-list-length skip-list-lanes skip-list-contains? skip-list-search skip-list-insert! skip-list-delete! )) (define-structure skip-lists skip-lists-interface (open scheme define-record-type* coin-flipping ) (optimize auto-integrate) (files skip-list)) ;;;; Variant Record Types (define-interface variant-types-interface (export (define-variant-type :syntax))) (define-structure variant-types variant-types-interface (open scheme record-types records ;; not ENUMERATED -- see definition of DEFINE-ENUMERATION & ;; ENUM in the code enum-case code-quote destructuring signals util ) (for-syntax (open scheme destructuring names )) (files variant-type)) ;;;; Profiler (define-interface profiler-interface (export profile profile-and-display)) (define-structure profiler profiler-interface (open scheme receiving tables sort disclosers interrupts architecture session-data escapes continuations templates disclosers primitives debug-data environments command-processor ) (optimize auto-integrate) (files profile)) ;;; This structure is for Scheme48 0.53 (on which scsh is based). ;;; Don't load the above one into 0.53 or scsh; don't load the next one ;;; into later versions. (define-structure profiler-0.53 profiler-interface (open scheme receiving tables sort disclosers architecture enumerated session-data escapes continuations debug-data environments command-processor command-levels ) (optimize auto-integrate flat-environments) (files profile-0.53)) ;;;; Apropos (define-interface apropos-interface (export apropos apropos-all with-apropos-verbosity set-apropos-verbosity! )) (define-structure apropos apropos-interface (open scheme fluids cells signals features packages packages-internal (subset package-commands-internal (config-package)) bindings locations disclosers tables sorting destructuring meta-types (subset display-conditions (limited-write)) extended-ports ) (optimize auto-integrate) (files apropos))