From 1f387b867825563c29267de92fdbc7cda02a7c88 Mon Sep 17 00:00:00 2001 From: Eric Dobson Date: Fri, 17 Jun 2011 17:37:49 -0400 Subject: [PATCH] Added types for parameters and parameterization operations. original commit: 469f0a5314d1ff1348bb8fe3e4d4d45fda0387b9 --- collects/typed-scheme/base-env/base-env.rkt | 27 ++++++++++++++++----- collects/typed-scheme/types/abbrev.rkt | 2 ++ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/collects/typed-scheme/base-env/base-env.rkt b/collects/typed-scheme/base-env/base-env.rkt index e3a410de..42e6f065 100644 --- a/collects/typed-scheme/base-env/base-env.rkt +++ b/collects/typed-scheme/base-env/base-env.rkt @@ -457,6 +457,27 @@ [current-preserved-thread-cell-values (cl->* (-> Univ) (-> Univ -Void))] + +;Section 10.3.3 (Parameters) + +;hidden parameter bindings +[parameterization-key Sym] +[extend-parameterization (-poly (a b) (-> Univ (-Param a b) a Univ))] + +[make-parameter (-poly (a b) (cl-> [(a) (-Param a a)] + [(b (a . -> . b)) (-Param a b)]))] +[make-derived-parameter (-poly (a b c d) (-> (-Param a b) (-> c a) (-> b d) (-Param c d)))] +[parameter? (make-pred-ty (-poly (a b) (-Param a b)))] +[parameter-procedure=? (-poly (a b c d) (-> (-Param a b) (-Param c d) B))] + +[current-parameterization (-> -Parameterization)] +[call-with-parameterization (-poly (a) (-> -Parameterization (-> a) a))] +[parameterization? (make-pred-ty -Parameterization)] + + + + + [future (-poly (A) ((-> A) . -> . (-future A)))] [touch (-poly (A) ((-future A) . -> . A))] @@ -544,13 +565,7 @@ [unsafe-struct-set! top-func] [unsafe-struct*-set! top-func] -;; parameter stuff - -[parameterization-key Sym] -[extend-parameterization (-poly (a b) (-> Univ (-Param a b) a Univ))] [continuation-mark-set-first (-> (-opt -Cont-Mark-Set) Univ Univ)] -[make-parameter (-poly (a b) (cl-> [(a) (-Param a a)] - [(b (a . -> . b)) (-Param a b)]))] [current-directory (-Param -Pathlike -Path)] [current-command-line-arguments (-Param (-vec -String) (-vec -String))] diff --git a/collects/typed-scheme/types/abbrev.rkt b/collects/typed-scheme/types/abbrev.rkt index 71999c99..5ff25e37 100644 --- a/collects/typed-scheme/types/abbrev.rkt +++ b/collects/typed-scheme/types/abbrev.rkt @@ -209,6 +209,8 @@ (define -Custodian (make-Base 'Custodian #'custodian? custodian? #'Custodian)) +(define -Parameterization (make-Base 'Parameterization #'parameterization? parameterization? #'Parameterization)) +