packages feed

NanoProlog 0.2.3.2 → 0.2.3.3

raw patch · 3 files changed

+9/−4 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Language.Prolog.NanoProlog.NanoProlog: pTerm, pFun :: Parser Term
+ Language.Prolog.NanoProlog.NanoProlog: pTerm, pFun, pCons :: Parser Term
+ Language.Prolog.NanoProlog.NanoProlog: type Proofs = [(Tag, Rule)]
+ Language.Prolog.NanoProlog.NanoProlog: type TaggedTerm = (Tag, Term)

Files

NanoProlog.cabal view
@@ -1,5 +1,5 @@ Name:                NanoProlog-Version:             0.2.3.2+Version:             0.2.3.3 Synopsis:            Very small  interpreter for a Prolog-like language Description:         This package was developed to demonstrate the ideas behind                      the Prolog language. It contains a very small interpreter
src/Language/Prolog/NanoProlog/Interpreter.hs view
@@ -30,7 +30,7 @@ loop rules = do  putStrLn "goal? "                  s <- getLine                  unless (s == "quit") $-                   do  let (goal, errors) = startParse pFun s+                   do  let (goal, errors) = startParse pTerm s                        if null errors                          then  printSolutions (solve rules emptyEnv [("0",goal)])                          else  do  putStrLn "Some goals were expected:"
src/Language/Prolog/NanoProlog/NanoProlog.hs view
@@ -13,12 +13,15 @@   ,  Subst(..)   ,  Taggable(..)   ,  Term(..)+  ,  Proofs+  ,  TaggedTerm   ,  emptyEnv   ,  enumerateDepthFirst   ,  matches   ,  pFun   ,  pRule   ,  pTerm+  ,  pCons   ,  pTerms   ,  solve   ,  startParse@@ -163,8 +166,10 @@ pSepDot :: Parser String -> Parser [String] pSepDot p = (:) <$> p <*> pList ((:) <$> pDot <*> p) -pTerm, pFactor, pVar, pFun :: Parser  Term-pTerm = pChainr ((\ f a -> Fun "->" [f, a]) <$ pToken "->") pFactor+pTerm, pFactor, pCons, pVar, pFun :: Parser  Term+pTerm = pChainr ((\ f a -> Fun "->" [f, a]) <$ pToken "->") pCons +pCons =     (\a b -> Fun "cons" [a, b]) <$> pFactor <* pToken ":" <*> pCons +        <|> pFactor pFactor  =     pVar           <|>  pFun           <|>  pParens pTerm