26 lines
741 B
Haskell
26 lines
741 B
Haskell
|
|
{-# HLINT ignore "Redundant flip" #-}
|
||
|
|
{-# LANGUAGE ImportQualifiedPost #-}
|
||
|
|
{-# LANGUAGE OverloadedStrings #-}
|
||
|
|
{-# LANGUAGE ScopedTypeVariables #-}
|
||
|
|
{-# OPTIONS_GHC -Wno-unrecognised-pragmas #-}
|
||
|
|
|
||
|
|
module Datalog.DatalogDB where
|
||
|
|
|
||
|
|
import Control.Exception.Base
|
||
|
|
import Data.List
|
||
|
|
import Data.Map (Map)
|
||
|
|
import Data.Map qualified as Map
|
||
|
|
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.Rules
|
||
|
|
|
||
|
|
class DatalogDB db where
|
||
|
|
emptyDB :: db
|
||
|
|
lookupRelation :: db -> Text -> Maybe Relation
|
||
|
|
insertRelation :: db -> Relation -> db
|