diff --git a/lib/srfi/145.sld b/lib/srfi/145.sld new file mode 100644 index 00000000..66d1b43b --- /dev/null +++ b/lib/srfi/145.sld @@ -0,0 +1,30 @@ + +(define-library (srfi 145) + (export assume) + (import (scheme base)) + (cond-expand + (elide-assumptions + (begin + (define-syntax assume + (syntax-rules () + ((assume expression objs ...) + expression) + ((assume) + (syntax-error "assume requires an expression")))))) + (else + (begin + (define-syntax assume + (syntax-rules () + ((assume expression objs ...) + (or expression + (fatal-error "invalid assumption" 'expression objs ...))) + ((assume) + (syntax-error "assume requires an expression"))))))) + (cond-expand + (debug + (begin + (define fatal-error error))) + (else + (begin + (define (fatal-error message . objs) + (car 0))))))