16 lines
681 B
Racket
16 lines
681 B
Racket
#;
|
|
(exn-pred exn:fail:syntax?)
|
|
#lang typed-scheme
|
|
|
|
(define-typed-struct type ())
|
|
|
|
(define-typed-struct (type-base type) ([name : Symbol]) #:transparent)
|
|
(define-typed-struct (type-var type) ([uniq : (U Symbol Number)]) #:transparent)
|
|
(define-typed-struct (type-dots type) ([base : type]) #:transparent)
|
|
|
|
(define-typed-struct (type-fun type) ([args : (Listof type)] [ret : type]) #:transparent)
|
|
(define-typed-struct (type-un type) ([cases : (Listof type)]) #:transparent)
|
|
(define-typed-struct (type-vals type) ([elems : (Listof type)]) #:transparent)
|
|
|
|
(define-typed-struct (type-poly type) ([vars : (Listof (U (type-dots type-var) type-var))]))
|