re arranged the file names in the contract library and exported a few more things from the main library to satisfy plai
svn: r2488
This commit is contained in:
parent
3e0638e9ab
commit
5e2f5d86de
|
@ -1,17 +1,13 @@
|
||||||
(module contract mzscheme
|
(module contract mzscheme
|
||||||
(require "private/contract.ss"
|
(require "private/contract.ss"
|
||||||
"private/contract-arrow.ss"
|
"private/contract-arrow.ss"
|
||||||
"private/contract-util.ss"
|
"private/contract-guts.ss"
|
||||||
"private/contract-ds.ss")
|
"private/contract-ds.ss")
|
||||||
|
|
||||||
|
|
||||||
(provide
|
(provide
|
||||||
(all-from "private/contract-ds.ss")
|
(all-from "private/contract-ds.ss")
|
||||||
(all-from "private/contract-arrow.ss")
|
(all-from "private/contract-arrow.ss")
|
||||||
(all-from-except "private/contract-util.ss"
|
(all-from-except "private/contract-guts.ss"
|
||||||
raise-contract-error
|
|
||||||
contract-proc
|
|
||||||
make-contract
|
|
||||||
contract-proc
|
|
||||||
build-compound-type-name)
|
build-compound-type-name)
|
||||||
(all-from-except "private/contract.ss")))
|
(all-from "private/contract.ss")))
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
(module contract-arrow mzscheme
|
(module contract-arrow mzscheme
|
||||||
(require (lib "etc.ss")
|
(require (lib "etc.ss")
|
||||||
(lib "list.ss")
|
(lib "list.ss")
|
||||||
"contract-util.ss"
|
"contract-guts.ss"
|
||||||
"class-internal.ss")
|
"class-internal.ss")
|
||||||
|
|
||||||
(require-for-syntax (lib "list.ss")
|
(require-for-syntax (lib "list.ss")
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
(module contract-ds mzscheme
|
(module contract-ds mzscheme
|
||||||
(require "contract-util.ss")
|
(require "contract-guts.ss")
|
||||||
(require-for-syntax "contract-ds-helpers.ss"
|
(require-for-syntax "contract-ds-helpers.ss"
|
||||||
"contract-helpers.scm")
|
"contract-helpers.scm")
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
(module contract-util mzscheme
|
(module contract-guts mzscheme
|
||||||
(require "contract-helpers.scm"
|
(require "contract-helpers.scm"
|
||||||
(lib "pretty.ss")
|
(lib "pretty.ss")
|
||||||
(lib "list.ss"))
|
(lib "list.ss"))
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
(define bangers (make-struct-field-mutator set count 'field))
|
(define bangers (make-struct-field-mutator set count 'field))
|
||||||
...))))])))
|
...))))])))
|
||||||
|
|
||||||
(define-values (proj-prop proj-pred? proj-get)
|
(define-values (proj-prop proj-pred? raw-proj-get)
|
||||||
(make-struct-type-property 'contract-projection))
|
(make-struct-type-property 'contract-projection))
|
||||||
(define-values (name-prop name-pred? name-get)
|
(define-values (name-prop name-pred? name-get)
|
||||||
(make-struct-type-property 'contract-name))
|
(make-struct-type-property 'contract-name))
|
||||||
|
@ -90,6 +90,26 @@
|
||||||
(define-values (flat-prop flat-pred? flat-get)
|
(define-values (flat-prop flat-pred? flat-get)
|
||||||
(make-struct-type-property 'contract-flat))
|
(make-struct-type-property 'contract-flat))
|
||||||
|
|
||||||
|
(define-values (pos-proj-prop pos-proj-pred? pos-proj-get)
|
||||||
|
(make-struct-type-property 'contract-positive-projection))
|
||||||
|
(define-values (neg-proj-prop neg-proj-pred? neg-proj-get)
|
||||||
|
(make-struct-type-property 'contract-negative-projection))
|
||||||
|
|
||||||
|
(define (proj-get ctc)
|
||||||
|
(cond
|
||||||
|
[(proj-pred? ctc)
|
||||||
|
(raw-proj-get ctc)]
|
||||||
|
[(and (neg-proj-pred? ctc)
|
||||||
|
(pos-proj-pred? ctc))
|
||||||
|
(let ([pos-abs (pos-proj-get ctc)]
|
||||||
|
[neg-abs (pos-proj-get ctc)])
|
||||||
|
(λ (pos neg src-info str)
|
||||||
|
(let ([p-proj (pos-abs pos src-info str)]
|
||||||
|
[n-proj (neg-abs neg src-info str)])
|
||||||
|
(lambda (v)
|
||||||
|
(n-proj (p-proj v))))))]
|
||||||
|
[else (error 'proj-get "unknown ~e" ctc)]))
|
||||||
|
|
||||||
;; contract-stronger? : contract contract -> boolean
|
;; contract-stronger? : contract contract -> boolean
|
||||||
;; indicates if one contract is stronger (ie, likes fewer values) than another
|
;; indicates if one contract is stronger (ie, likes fewer values) than another
|
||||||
;; this is not a total order.
|
;; this is not a total order.
|
|
@ -23,7 +23,7 @@ add struct contracts for immutable structs?
|
||||||
(lib "list.ss")
|
(lib "list.ss")
|
||||||
(lib "pretty.ss")
|
(lib "pretty.ss")
|
||||||
"contract-arrow.ss"
|
"contract-arrow.ss"
|
||||||
"contract-util.ss")
|
"contract-guts.ss")
|
||||||
|
|
||||||
(require "contract-helpers.scm")
|
(require "contract-helpers.scm")
|
||||||
(require-for-syntax (prefix a: "contract-helpers.scm"))
|
(require-for-syntax (prefix a: "contract-helpers.scm"))
|
||||||
|
|
|
@ -7,9 +7,7 @@
|
||||||
|
|
||||||
(module datatype-core mzscheme
|
(module datatype-core mzscheme
|
||||||
(require (lib "pconvert-prop.ss")
|
(require (lib "pconvert-prop.ss")
|
||||||
(lib "contract.ss" "mzlib" "private")
|
(lib "contract.ss"))
|
||||||
(lib "contract-util.ss" "mzlib" "private")
|
|
||||||
(lib "contract-arrow.ss" "mzlib" "private"))
|
|
||||||
(require-for-syntax "core-utils.ss")
|
(require-for-syntax "core-utils.ss")
|
||||||
|
|
||||||
(provide define-datatype-core
|
(provide define-datatype-core
|
||||||
|
|
Loading…
Reference in New Issue
Block a user