prolog 0.3.1 → 0.3.2
raw patch · 2 files changed
+10/−9 lines, 2 files
Files
- prolog.cabal +1/−1
- src/Unifier.hs +9/−8
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