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:
• aspects: manual module • AVL trees: manual module • combinators: manual module • lambda: manual module unit tests • list_utils: manual(incomplete) module unit tests • Ripple-Down Rules: manual file unit tests • set_utils: manual(incomplete) module unit tests • peano: manual module unit tests • portability (Quintus/SWI): manual all modules • syntax: manual module unit 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 library library archive manual
The library includes the following modules:
- Control.Monad.Utils
- Data.BinaryTree
- Data.Mutable
- Data.Transitive
- Data.Zipper
No comments:
Post a Comment