From 2f911a9f39cb264cb50067c61496adddc92331f6 Mon Sep 17 00:00:00 2001 From: Felix Dilke Date: Fri, 30 Jan 2026 14:22:46 +0000 Subject: [PATCH] simplified addFact --- haskell-experiments/src/Datalog/NaiveDatabase.hs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/haskell-experiments/src/Datalog/NaiveDatabase.hs b/haskell-experiments/src/Datalog/NaiveDatabase.hs index 4b6d428..8938c88 100644 --- a/haskell-experiments/src/Datalog/NaiveDatabase.hs +++ b/haskell-experiments/src/Datalog/NaiveDatabase.hs @@ -16,9 +16,7 @@ import Data.Maybe import Data.Set (Set) import Data.Set qualified as Set import Data.Text (Text) -import Data.Void -import Datalog.DatalogParser (Head (HeadSingle), Literal (..), Statement (..), Term (..), parseDatalog) -import Text.Megaparsec (ParseErrorBundle) +import Datalog.DatalogParser (Literal (..), Statement (..), Term (..), parseDatalog) import Datalog.Rules import Datalog.DatalogDB @@ -47,12 +45,11 @@ instance DatalogDB NaiveDatabase where addFact :: Literal -> NaiveDatabase -> NaiveDatabase addFact (Literal neg relationName terms) db@(NaiveDatabase relationMap constantSet) = - NaiveDatabase newRelationMap newConstantSet + insertRelation (addConstants db extraConstants) newRelation where newArity = length terms newRelation = lookupRelation0 relationName db newArity (Set.singleton terms) - newRelationMap = Map.insert relationName newRelation relationMap - newConstantSet = Set.union constantSet $ Set.fromList terms + extraConstants = Set.fromList terms addRule :: (Literal, [Literal]) -> NaiveDatabase -> NaiveDatabase addRule (ruleHead, body) db =