;;; $Id: type-check-external-type-expr.def,v 1.2 1999/06/23 16:57:22 leavens Exp $

trustme! ;; suppresses spurious error in tc:external-type-expr?, tc:occurs-in-external-type-expr?

(defrep external-type-expr datum)

(deftype tc:external-type-expr? (-> (datum) boolean))
(deftype tc:external-type-expr-variable? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-basic-type? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-poof? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-datum? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-dots? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-function-type? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-varargs-function-type? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-and-type? (-> (external-type-expr) boolean))
(deftype tc:external-type-expr-applied-type? (-> (external-type-expr) boolean))
(deftype tc:make-variable-external-type-expr (-> (symbol) external-type-expr))
(deftype tc:make-basic-external-type-expr (-> (symbol) external-type-expr))
(deftype tc:make-function-external-type-expr
  (-> ((list external-type-expr) external-type-expr) external-type-expr))
(deftype tc:make-and-external-type-expr (-> ((list external-type-expr)) external-type-expr))
(deftype tc:make-applied-external-type-expr (-> (symbol (list external-type-expr)) external-type-expr))
(deftype tc:external-type-expr->variable (-> (external-type-expr) variable))
(deftype tc:external-type-expr->basic-type (-> (external-type-expr) symbol))
(deftype tc:external-type-expr->function-arg-types (-> (external-type-expr) (list external-type-expr)))
(deftype tc:external-type-expr->function-result-type (-> (external-type-expr) external-type-expr))
(deftype tc:external-type-expr->conjoined-types (-> (external-type-expr) (list external-type-expr)))
(deftype tc:external-type-expr->operator (-> (external-type-expr) symbol))
(deftype tc:external-type-expr->operands (-> (external-type-expr) (list external-type-expr)))
(deftype tc:parse-external-type-expr (-> (datum) external-type-expr))
(deftype tc:occurs-in-external-type-expr? (-> (external-type-expr external-type-expr) boolean))
