{-# HLINT ignore "Redundant flip" #-} {-# LANGUAGE ImportQualifiedPost #-} {-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -Wno-unrecognised-pragmas #-} module Utility.Utility where import Control.Exception.Base import Data.List import Data.Maybe import Data.Set qualified as Set import Data.Text (Text) import Datalog.DatalogParser (Head (HeadSingle), Literal (..), Statement (..), Term (..), parseDatalog) import Datalog.DatalogDB import qualified Data.Map as Map -- All functions from domain to codomain allMaps :: Ord a => [a] -> [b] -> [Map.Map a b] allMaps [] _ = [Map.empty] allMaps (x:xs) cod = [ Map.insert x y m | y <- cod, m <- allMaps xs cod ]