www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit cb7a49ab0642db517e980c4efd8ade4cae3dbeeb
parent a3831adae2ab77c33f5798b615297bcdc86669f0
Author: Stephen Chang <stchang@ccs.neu.edu>
Date:   Wed, 23 Sep 2015 17:01:13 -0400

use #lang typecheck

Diffstat:
Mtapl/exist.rkt | 3+--
Mtapl/ext-stlc.rkt | 3+--
Mtapl/fomega.rkt | 3+--
Mtapl/fomega2.rkt | 3+--
Mtapl/fsub.rkt | 3+--
Mtapl/stlc+box.rkt | 3+--
Mtapl/stlc+cons.rkt | 3+--
Mtapl/stlc+lit.rkt | 3+--
Mtapl/stlc+rec-iso.rkt | 3+--
Mtapl/stlc+reco+sub.rkt | 3+--
Mtapl/stlc+reco+var.rkt | 22++++++++++------------
Mtapl/stlc+sub.rkt | 3+--
Mtapl/stlc+tup.rkt | 3+--
Mtapl/stlc.rkt | 3+--
Mtapl/sysf.rkt | 3+--
Mtapl/typecheck.rkt | 3++-
16 files changed, 26 insertions(+), 41 deletions(-)

diff --git a/tapl/exist.rkt b/tapl/exist.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "stlc+reco+var.rkt" #%app λ let) (prefix-in stlc: (only-in "stlc+reco+var.rkt" #%app λ let)) (only-in "stlc+rec-iso.rkt")) ; to get current-type=? diff --git a/tapl/ext-stlc.rkt b/tapl/ext-stlc.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" ;; prefix-in an identifier if: ;; - it will be extended, eg #%datum ;; - want to use racket's version in implemetation (this) file, eg #%app diff --git a/tapl/fomega.rkt b/tapl/fomega.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "sysf.rkt" #%app λ #%datum Λ inst ∀) (rename-in (prefix-in sysf: (only-in "sysf.rkt" #%app λ ∀ ~∀)) [sysf:~∀ ~sysf:∀]) diff --git a/tapl/fomega2.rkt b/tapl/fomega2.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "sysf.rkt" #%app λ #%datum Λ inst ∀) (rename-in (prefix-in sysf: (only-in "sysf.rkt" #%app λ ∀ ~∀)) [sysf:~∀ ~sysf:∀]) diff --git a/tapl/fsub.rkt b/tapl/fsub.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "stlc+reco+sub.rkt" #%app λ +) (prefix-in stlc: (only-in "stlc+reco+sub.rkt" #%app λ)) (only-in "sysf.rkt" ∀?) diff --git a/tapl/stlc+box.rkt b/tapl/stlc+box.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (prefix-in stlc: (only-in "stlc+cons.rkt" #%app)) (except-in "stlc+cons.rkt" #%app)) (provide (rename-out [stlc:#%app #%app])) diff --git a/tapl/stlc+cons.rkt b/tapl/stlc+cons.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (prefix-in stlc: (only-in "stlc+reco+var.rkt" #%app)) (except-in "stlc+reco+var.rkt" #%app)) (provide (rename-out [stlc:#%app #%app] [cons/tc cons])) diff --git a/tapl/stlc+lit.rkt b/tapl/stlc+lit.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" ;(extends "stlc.rkt" #:impl-uses (→)) (require (except-in "stlc.rkt" #%app) (prefix-in stlc: (only-in "stlc.rkt" #%app))) diff --git a/tapl/stlc+rec-iso.rkt b/tapl/stlc+rec-iso.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "stlc+tup.rkt" #%app λ) ; import tuples, not records (prefix-in stlc: (only-in "stlc+tup.rkt" #%app λ)) (only-in "stlc+reco+var.rkt" ∨ var case define-type-alias define)) ; and variants diff --git a/tapl/stlc+reco+sub.rkt b/tapl/stlc+reco+sub.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" ;;use type=? and eval-type from stlc+reco+var.rkt, not stlc+sub.rkt ;; but extend sub? from stlc+sub.rkt (require (except-in "stlc+sub.rkt" #%app #%datum) diff --git a/tapl/stlc+reco+var.rkt b/tapl/stlc+reco+var.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (only-in racket/bool symbol=?)) (require (prefix-in stlc: (only-in "stlc+tup.rkt" #%app begin let × ×?)) (except-in "stlc+tup.rkt" #%app begin tup proj let ×) @@ -40,6 +39,15 @@ [(_ alias:id τ:type) #'(define-syntax alias (syntax-parser [x:id #'τ.norm]))])) +(define-syntax (define/tc stx) + (syntax-parse stx + [(_ x:id e) + #:with (e- τ) (infer+erase #'e) + #:with y (generate-temporary) + #'(begin + (define-syntax x (make-rename-transformer (⊢ y : τ))) + (define y e-))])) + ; re-define tuples as records ; dont use define-type-constructor because I want the : literal syntax (define-syntax × @@ -138,12 +146,3 @@ (⊢ (let ([l_e (car e-)]) (cond [(symbol=? l_e 'l) (let ([x- (cadr e-)]) e_l-)] ...)) : #,(stx-car #'(τ_el ...)))])) - -(define-syntax (define/tc stx) - (syntax-parse stx - [(_ x:id e) - #:with (e- τ) (infer+erase #'e) - #:with y (generate-temporary) - #'(begin - (define-syntax x (make-rename-transformer (⊢ y : τ))) - (define y e-))])) -\ No newline at end of file diff --git a/tapl/stlc+sub.rkt b/tapl/stlc+sub.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "stlc+lit.rkt" #%datum + #%app) (prefix-in stlc: (only-in "stlc+lit.rkt" #%app #%datum))) (provide (rename-out [stlc:#%app #%app] [datum/tc #%datum])) diff --git a/tapl/stlc+tup.rkt b/tapl/stlc+tup.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (prefix-in stlc: (only-in "ext-stlc.rkt" #%app)) (except-in "ext-stlc.rkt" #%app)) (provide (rename-out [stlc:#%app #%app]) diff --git a/tapl/stlc.rkt b/tapl/stlc.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (provide (rename-out [λ/tc λ] [app/tc #%app])) (provide (for-syntax current-type=? types=?)) (provide #%module-begin #%top-interaction #%top require) ; useful racket forms diff --git a/tapl/sysf.rkt b/tapl/sysf.rkt @@ -1,5 +1,4 @@ -#lang racket/base -(require "typecheck.rkt") +#lang s-exp "typecheck.rkt" (require (except-in "stlc+lit.rkt" #%app λ) (prefix-in stlc: (only-in "stlc+lit.rkt" #%app λ)) (only-in "stlc+rec-iso.rkt")) ; want type=? from here diff --git a/tapl/typecheck.rkt b/tapl/typecheck.rkt @@ -7,7 +7,8 @@ (for-meta 2 racket/base syntax/parse racket/syntax syntax/stx "stx-utils.rkt") (for-meta 3 racket/base syntax/parse racket/syntax) racket/provide) -(provide +(provide + (all-from-out racket/base) (for-syntax (all-defined-out)) (all-defined-out) (for-syntax (all-from-out racket syntax/parse racket/syntax syntax/stx "stx-utils.rkt"))