packages feed

prolog 0.3.1 → 0.3.2

raw patch · 2 files changed

+10/−9 lines, 2 files

Files

prolog.cabal view
@@ -1,5 +1,5 @@ Name:                prolog-Version:             0.3.1+Version:             0.3.2 Synopsis:            A Prolog interpreter written in Haskell. Description:         A Prolog interpreter written in Haskell. Implements a subset of the Prolog language. License:             PublicDomain
src/Unifier.hs view
@@ -5,12 +5,13 @@    ) where -import Control.Monad (MonadFail, mzero)-import Control.Arrow (second)-import Data.Function (fix)-import Data.Generics (everything, mkQ)+import           Control.Arrow      (second)+import           Control.Monad      (mzero)+import           Control.Monad.Fail (MonadFail)+import           Data.Function      (fix)+import           Data.Generics      (everything, mkQ) -import Syntax+import           Syntax  type Unifier      = [Substitution] type Substitution = (VariableName, Term)@@ -57,6 +58,6 @@ apply :: Unifier -> Term -> Term apply = flip $ foldl $ flip substitute   where-    substitute (v,t) (Var v') | v == v' = t-    substitute s     (Struct a ts)      = Struct a (map (substitute s) ts)-    substitute _     t                  = t+    substitute (v,t) (Var v')      | v == v' = t+    substitute s     (Struct a ts) = Struct a (map (substitute s) ts)+    substitute _     t             = t