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 +1/−1
- src/Language/Prolog/NanoProlog/Interpreter.hs +1/−1
- src/Language/Prolog/NanoProlog/NanoProlog.hs +7/−2
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