Define `any' signature differently.

... to actually enable the subtyping check.  Also, make named
signatures work for signature variables.
This commit is contained in:
Mike Sperber 2010-10-13 09:41:10 +02:00
parent 615d8f1329
commit f3191ff4d6
4 changed files with 8 additions and 8 deletions

View File

@ -921,8 +921,8 @@
(define symbol (signature/arbitrary arbitrary-symbol (predicate symbol?))) (define symbol (signature/arbitrary arbitrary-symbol (predicate symbol?)))
(define empty-list (signature (one-of empty))) (define empty-list (signature (one-of empty)))
(define unspecific (signature (predicate (lambda (_) #t)))) (define unspecific (signature unspecific %unspecific))
(define any (signature (predicate (lambda (_) #t)))) (define any (signature any %any))
;; aus collects/lang/private/teach.ss ;; aus collects/lang/private/teach.ss

View File

@ -94,10 +94,10 @@
(?id (?id
(identifier? #'?id) (identifier? #'?id)
(with-syntax ((?stx (phase-lift stx)) (with-syntax ((?stx (phase-lift stx))
(?name name)) (?name (or name (syntax->datum #'?id))))
(let ((name (symbol->string (syntax->datum #'?id)))) (let ((name (symbol->string (syntax->datum #'?id))))
(if (char=? #\% (string-ref name 0)) (if (char=? #\% (string-ref name 0))
#'(make-type-variable-signature '?id ?stx) #'(make-type-variable-signature '?name ?stx)
(with-syntax (with-syntax
((?raise ((?raise
(syntax/loc #'?stx (syntax/loc #'?stx

View File

@ -85,10 +85,10 @@
(?id (?id
(identifier? #'?id) (identifier? #'?id)
(with-syntax ((?stx (phase-lift stx)) (with-syntax ((?stx (phase-lift stx))
(?name name)) (?name (or name (syntax->datum #'?id))))
(let ((name (symbol->string (syntax->datum #'?id)))) (let ((name (symbol->string (syntax->datum #'?id))))
(if (char=? #\% (string-ref name 0)) (if (char=? #\% (string-ref name 0))
#'(make-type-variable-signature '?id ?stx) #'(make-type-variable-signature '?name ?stx)
(with-syntax (with-syntax
((?raise ((?raise
#'(error 'signatures "expected a signature, found ~e" ?id))) #'(error 'signatures "expected a signature, found ~e" ?id)))

View File

@ -2916,9 +2916,9 @@
(define Symbol (signature/arbitrary arbitrary-symbol (predicate symbol?))) (define Symbol (signature/arbitrary arbitrary-symbol (predicate symbol?)))
(define Empty-list (signature (one-of empty))) (define Empty-list (signature (one-of empty)))
(define Any (signature (predicate (lambda (_) #t)))) (define Any (signature Any %Any))
(define Unspecific (signature (predicate (lambda (_) #t)))) (define Unspecific (signature Unspecific %Unspecific))
(define (cons-of car-sig cdr-sig) (define (cons-of car-sig cdr-sig)
(make-pair-signature #t car-sig cdr-sig)) (make-pair-signature #t car-sig cdr-sig))