#lang scheme (require (planet cce/scheme:4:1/planet)) (require (this-package-in datatype) (this-package-in test-harness)) (provide (this-package-out datatype) (except-out (all-from-out scheme) error (for-syntax error) #%module-begin provide) (except-out (this-package-out test-harness) plai-error) (rename-out [plai-error error] [plai-module-begin #%module-begin]) (rename-out [plai-provide provide])) (define-syntax (plai-provide stx) (raise-syntax-error #f "The PLAI language provides all defined names" stx)) (define-syntax (plai-module-begin stx) (syntax-case stx () [(_ body ...) #`(#%module-begin (provide #,(datum->syntax stx '(all-defined-out))) body ...)]))