;;; $Id: combinator-term.def,v 1.1 1999/02/11 06:25:19 leavens Exp $

trustme!

(defrep combinator-term datum)

(deftype var? (-> (combinator-term) boolean))
(deftype make-var (-> (symbol) combinator-term))
(deftype var->symbol (-> (combinator-term) symbol))

(deftype capp? (-> (combinator-term) boolean))
(deftype make-capp (-> (combinator-term combinator-term) combinator-term))
(deftype capp->rator (-> (combinator-term) combinator-term))
(deftype capp->rand (-> (combinator-term) combinator-term))

(deftype S? (-> (combinator-term) boolean))
(deftype make-S (-> () combinator-term))

(deftype K? (-> (combinator-term) boolean))
(deftype make-K (-> () combinator-term))

(deftype I? (-> (combinator-term) boolean))
(deftype make-I (-> () combinator-term))

(deftype combinator-term? (-> (datum) boolean))
(deftype parse-combinator-term (-> (datum) combinator-term))
(deftype unparse-combinator-term (-> (combinator-term) datum))
