- Computing and Information Systems - Research Publications
Computing and Information Systems - Research Publications
Permanent URI for this collection
3 results
Filters
Reset filtersSettings
Statistics
Citations
Search Results
Now showing
1 - 3 of 3
-
ItemMonadic constraint programmingSchrijvers, 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.
-
ItemHM(X) type inference is CLP(X) solvingSulzmann, M ; Stuckey, PJ (CAMBRIDGE UNIV PRESS, 2008-03)
-
ItemUnderstanding functional dependencies via constraint handling rulesSulzmann, 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.