main.ss
#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 ...)]))