Instantiation appears to work.
original commit: e912818f866d6bcbeb43e4567ba9d0f1d58d6e3c
This commit is contained in:
parent
d071154438
commit
d6f8dfc983
|
@ -498,6 +498,20 @@
|
|||
[syntax? (make-pred-ty (-Syntax Univ))]
|
||||
[syntax-property (-poly (a) (cl->* (-> (-Syntax a) Univ Univ (-Syntax a))
|
||||
(-> (-Syntax Univ) Univ Univ)))]
|
||||
|
||||
;; experimental
|
||||
|
||||
[map* (make-PolyDots
|
||||
(list 'a 'b 'c)
|
||||
(make-Function
|
||||
(list
|
||||
(make-arr-dots
|
||||
(list (make-Function (list (make-arr-dots (list (-v b)) (-v a) (-v c) 'c)))
|
||||
(-lst (-v b)))
|
||||
(-lst (-v a))
|
||||
(-lst (-v c))
|
||||
'c))))]
|
||||
|
||||
)))
|
||||
|
||||
(begin-for-syntax
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
#lang scheme/base
|
||||
(provide assert)
|
||||
(provide assert map*)
|
||||
|
||||
(define (assert v)
|
||||
(unless v
|
||||
(error "Assertion failed - value was #f"))
|
||||
v)
|
||||
|
||||
(define map* map)
|
||||
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@
|
|||
(when rest
|
||||
(fp "~a* " rest))
|
||||
(when drest
|
||||
(fp "~a ..." drest))
|
||||
(fp "~a ... ~a " (car drest) (cdr drest)))
|
||||
(fp "-> ~a" rng)
|
||||
(unless (and (null? thn-eff) (null? els-eff))
|
||||
(fp " : ~a ~a" thn-eff els-eff))
|
||||
|
@ -115,6 +115,8 @@
|
|||
[(Poly-names: names body)
|
||||
#;(fprintf (current-error-port) "POLY SEQ: ~a~n" (Type-seq body))
|
||||
(fp "(All ~a ~a)" names body)]
|
||||
[(PolyDots-names: (list names ... dotted) body)
|
||||
(fp "(All ~a ~a)" (append names (list dotted '...)) body)]
|
||||
#;
|
||||
[(Mu-unsafe: b) (fp "(unsafe-mu ~a ~a)" (Type-seq c) b)]
|
||||
[(Mu: x (Syntax: (Union: (list
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
(begin
|
||||
(when (and (pair? drest)
|
||||
(eq? name (cdr drest)))
|
||||
(int-err "substitute used on ... variable ~a" name))
|
||||
(int-err "substitute used on ... variable ~a in type ~a" name target))
|
||||
(make-arr (map sb dom)
|
||||
(sb rng)
|
||||
(and rest (sb rest))
|
||||
|
|
Loading…
Reference in New Issue
Block a user