\documentclass[12pt]{article}

\usepackage{times,mathptm}
\pagestyle{myheadings}



\parindent 0in
\setlength{\parindent}{0in}
\setlength{\parskip}{1ex}

\topmargin -0.1in \headheight\baselineskip
\textheight 8.5in         % 1in top and bottom margin
\textwidth 6.5in        % 1in left and right margin
\oddsidemargin 0in
\evensidemargin 0in




%\usepackage{amsmath}
%\usepackage{amssymb}


% \setlength{\itemsep}{0pt}

\markright{\footnotesize CS 451 Programming Paradigms, Spring 2001}

\begin{document}

\section*{Homework set 19: programming in ML using the module language; 
interpretive implementation of logic programming --- due Wednesday 2 May}

Total number of points available on this homework is 100. Full credit
is equivalent to 100 points.


\begin{enumerate}

\item   (50 pts.)
In class we developed an interpreter for the core Prolog language. 
It was written in a direct style, and it performed the full backtracking
search of Prolog, accumulating all possible answer sets before returning.

In this exercise, you are to keep the unification component unchanged.

Use a continuation-passing programing style to implement 
the Prolog search. (Use success and failure continuations.)


\item   (50 pts.)

Extend the data structure for Prolog clauses to represent the
\emph{cut} operator, \texttt{!}. Modify the search appropriately to implement
\texttt{!}.

\end{enumerate}


\end{document}



