Corpus ID: 9531395

2 From Prolog to Haskell and Back

  title={2 From Prolog to Haskell and Back},
  author={Tom Schrijvers and Bart Demoen},
Equational Reasoning is a feature of Functional Programming much envied by Logic Programmers. We argue that logic programmers should not shy away from adopting equational reasoning because of perceived pitfalls, but rather embrace it to indulge in its many benefits. We propose and illustrate two approaches: a cumbersome indirection via Haskell and a more insightful approach directly in Prolog. 


Stepwise Enhancement and Higher-Order Programming in Prolog
A prototype system that allows higher-order predicate definitions to be produced automatically from type definitions or Horn clause skeletons is described and some experiences in using higherorder programming in Prolog are related. Expand
A number of common laws of reasoning supplied by the predicate calculus are listed and it is proved their validity for the standard depth rst search procedural reading of Prolog and also holds for alternative search strategies. Expand
Unfolding - Definition - Folding, in this Order, for Avaoiding Unnecessary Variables in Logic Programs
We take a syntactically based approach to the automatic improvement of performances of logic programs by using the unfold/fold transformation technique. A cause of program inefficiency is often theExpand
Using circular programs to eliminate multiple traversals of data
  • R. Bird
  • Computer Science
  • Acta Informatica
  • 2004
The transformation makes essential use of lazy evaluation and local recursion to build a circular program that, on one pass over the structure, determines the effects of the individual traversals and then combines them. Expand
Algebra of programming
  • R. Bird, O. Moor
  • Mathematics, Computer Science
  • Prentice Hall International series in computer science
  • 1996
This paper presents a meta-modelling framework that automates the very labor-intensive and therefore time-heavy and therefore expensive and expensive process of designing and testing algorithms for dynamic programming. Expand
Algebra of programming. Prentice-Hall, Inc
  • Upper Saddle River, NJ,
  • 1997