Computing and Information Systems - Research Publications

Permanent URI for this collection

Search Results

Now showing 1 - 3 of 3
  • Item
    Thumbnail Image
    Monadic constraint programming
    Schrijvers, T ; Stuckey, P ; Wadler, P (CAMBRIDGE UNIV PRESS, 2009-11)
    Abstract A constraint programming system combines two essential components: a constraint solver and a search engine. The constraint solver reasons about satisfiability of conjunctions of constraints, and the search engine controls the search for solutions by iteratively exploring a disjunctive search tree defined by the constraint program. In this paper we give a monadic definition of constraint programming in which the solver is defined as a monad threaded through the monadic search tree. We are then able to define search and search strategies as first-class objects that can themselves be built or extended by composable search transformers. Search transformers give a powerful and unifying approach to viewing search in constraint programming, and the resulting constraint programming system is first class and extremely flexible.
  • Item
    Thumbnail Image
    HM(X) type inference is CLP(X) solving
    Sulzmann, M ; Stuckey, PJ (CAMBRIDGE UNIV PRESS, 2008-03)
  • Item
    Thumbnail Image
    Understanding functional dependencies via constraint handling rules
    Sulzmann, M ; Duck, GJ ; Peyton-Jones, S ; Stuckey, PJ (CAMBRIDGE UNIV PRESS, 2007-01)
    Abstract Functional dependencies are a popular and useful extension to Haskell style type classes. We give a reformulation of functional dependencies in terms of Constraint Handling Rules (CHRs). In previous work, CHRs have been employed for describing user-programmable type extensions in the context of Haskell style type classes. Here, we make use of CHRs to provide for the first time a concise result that under some sufficient conditions, functional dependencies allow for sound, complete and decidable type inference. The sufficient conditions imposed on functional dependencies can be very limiting. We show how to safely relax these conditions and suggest several sound extensions of functional dependencies. Our results allow for a better understanding of functional dependencies and open up the opportunity for new applications.