Skip to content

Latest commit

History

45 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Prolog_Library

A minimal Prolog interpreter written in Haskell. Implements unification, clause interpretation with backtracking, fresh variable generation, cuts, and error reporting.

Build

cabal build

Run

cabal run prolog-library

Or with GHCi:

ghci src/Term.hs src/Unify.hs src/Interpret.hs src/Examples.hs

Modules

ModulePurpose
TermCore types: Term, Clause, Prolog, Subst
UnifyRobinson unification and substitution
InterpretInterpreter with backtracking and cuts
ExamplesGenealogical tree database and sample queries
TestsUnit tests for unification, substitution, and queries

Features

  • Unification: standard Robinson unification with substitution
  • Backtracking: depth-first search over the clause database
  • Cuts (Cut): commits to the current clause, prevents backtracking
  • Fresh variables: state-based alpha-conversion (no name collisions)
  • Error reporting: Either String results with failure messages

Example

queryResult myExample (Func"pai" [Var"X", Atom"janeti"])
-- [("X","olicio")]

The myExample database models a family tree with progenitor, sexo, mae, and pai predicates.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages