;;; $Id: iseq-mod.scm,v 1.2 2006/01/05 22:24:09 leavens Exp $ ;;; ::= (module iseq-mod (lib "typedscm.ss" "typedscm") (provide iseq? iseq iseq->head iseq->tail) (deftype iseq? (type-predicate-for iseq)) (deftype iseq (-> (number (-> () iseq)) iseq)) (deftype iseq->head (-> (iseq) number)) (deftype iseq->tail (-> (iseq) iseq)) (defrep (iseq (pair-of number (-> () iseq)))) (define iseq? (lambda (d) (and (pair? d) (number? (car d)) (procedure? (cdr d))))) (define iseq (lambda (num thunk) (cons num (has-type-trusted (-> () iseq) thunk)))) (define iseq->head (lambda (iseq) (car iseq))) (define iseq->tail (lambda (iseq) (has-type-trusted (pair-of number (-> () iseq)) ((cdr iseq))))) ) ;; end module