  Many theories of semantic interpretation use lambda-term manipulation to
compositionally compute the meaning of a sentence. These theories are usually
implemented in a language such as Prolog that can simulate lambda-term
operations with first-order unification. However, for some interesting cases,
such as a Combinatory Categorial Grammar account of coordination constructs,
this can only be done by obscuring the underlying linguistic theory with the
``tricks'' needed for implementation. This paper shows how the use of abstract
syntax permitted by higher-order logic programming allows an elegant
implementation of the semantics of Combinatory Categorial Grammar, including
its handling of coordination constructs.
