use #lang typecheck
This commit is contained in:
parent
a3831adae2
commit
cb7a49ab06
|
@ -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=?
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:∀])
|
||||
|
|
|
@ -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:∀])
|
||||
|
|
|
@ -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" ∀?)
|
||||
|
|
|
@ -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]))
|
||||
|
|
|
@ -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]))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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-))]))
|
|
@ -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]))
|
||||
|
|
|
@ -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])
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"))
|
||||
|
|
Loading…
Reference in New Issue
Block a user