Logic Libraries

Logic Programming Utilities

Programming in Prolog and other logic-based languages may appear to be rather austere, as the breath of functionality is available from first principles. There are sets of relations and useful syntax abstractions, particularly those concerning set relations and lambda (combinatory) logic that I find convenient to use as I develop systems. The below list covers the modules documented as used by Cotillion Group:
AVL trees:manualmodule
lambda:manualmoduleunit tests
list_utils:manual(incomplete)moduleunit tests
Ripple-Down Rules:manualfileunit tests
set_utils:manual(incomplete)moduleunit tests
peano:manualmoduleunit tests
portability (Quintus/SWI):manualall modules
syntax:manualmoduleunit tests

Functional Programming Utilities

These modules provide a data structure (the simple Ariadne zipper) and transitioning classes for such collections. These modules depend on two sets of libraries: Edward Kmett'scategory-extras library (particularly the Copointed and Comonad classes) and Einar Karttunen's Comonad classes (I use a variation of the Stream data type, but the duals of the more useful monad classes are illuminating). Please note the syntax is incompatible between the two authors — I use Kmett's.
It may appear odd to place these functional programming libraries under the head of "Logic", but I use these libraries for the overriding purpose of logic programming using Haskell, so the fit is a good one for me. The functional programming libraries are available under the caveat geophf license. Other sources on this page are copyright under their respective licenses.
Category geophf librarylibrary archivemanual
The library includes the following modules:
  • Control.Monad.Utils
  • Data.BinaryTree
  • Data.Mutable
  • Data.Transitive
  • Data.Zipper

No comments:

Post a Comment