diff --git a/collects/typed-scheme/main.rkt b/collects/typed-scheme/main.rkt index 2082ac80..016cdebf 100644 --- a/collects/typed-scheme/main.rkt +++ b/collects/typed-scheme/main.rkt @@ -14,4 +14,4 @@ (for-syntax "private/base-types-extra.rkt")) (provide (rename-out [with-handlers: with-handlers]) (for-syntax (all-from-out "private/base-types-extra.rkt")) - assert with-type for for*) + assert defined? with-type for for*) diff --git a/collects/typed-scheme/private/base-env.rkt b/collects/typed-scheme/private/base-env.rkt index a8e248cd..4eccedf0 100644 --- a/collects/typed-scheme/private/base-env.rkt +++ b/collects/typed-scheme/private/base-env.rkt @@ -186,6 +186,7 @@ [assert (-poly (a b) (cl->* (Univ (make-pred-ty (list a) Univ b) . -> . b) (-> (Un a (-val #f)) a)))] +[defined? (->* (list Univ) -Boolean : (-FS (-not-filter -Undefined 0 null) (-filter -Undefined 0 null)))] [gensym (->opt [Sym] Sym)] [string-append (->* null -String -String)] [open-input-string (-> -String -Input-Port)] diff --git a/collects/typed-scheme/private/extra-procs.rkt b/collects/typed-scheme/private/extra-procs.rkt index b4a74b03..5b90512b 100644 --- a/collects/typed-scheme/private/extra-procs.rkt +++ b/collects/typed-scheme/private/extra-procs.rkt @@ -1,5 +1,5 @@ #lang scheme/base -(provide assert) +(provide assert defined?) (define-syntax assert (syntax-rules () @@ -8,3 +8,6 @@ ((assert v pred) (let ((val v)) (if (pred val) val (error "Assertion failed")))))) + +(define (defined? v) + (not (equal? v (letrec ([x x]) x)))) \ No newline at end of file diff --git a/collects/typed/racket/base.rkt b/collects/typed/racket/base.rkt index 9d0942a2..65d54324 100644 --- a/collects/typed/racket/base.rkt +++ b/collects/typed/racket/base.rkt @@ -14,5 +14,5 @@ (for-syntax typed-scheme/private/base-types-extra)) (provide (rename-out [with-handlers: with-handlers] [define-type-alias define-type]) - assert with-type for for* + assert defined? with-type for for* (for-syntax (all-from-out typed-scheme/private/base-types-extra))) diff --git a/collects/typed/scheme/base.rkt b/collects/typed/scheme/base.rkt index abbf0ebf..4c184c21 100644 --- a/collects/typed/scheme/base.rkt +++ b/collects/typed/scheme/base.rkt @@ -14,5 +14,5 @@ (for-syntax typed-scheme/private/base-types-extra)) (provide (rename-out [with-handlers: with-handlers] [define-type-alias define-type]) - assert with-type for for* + assert defined? with-type for for* (for-syntax (all-from-out typed-scheme/private/base-types-extra)))