{-# LANGUAGE OverloadedStrings #-}

module Funcons.Core.Values.Composite.MultisetsBuiltin where

import Funcons.EDSL
import qualified Funcons.Operations as VAL 

library :: FunconLibrary
library = [(Name, EvalFunction)] -> FunconLibrary
libFromList [
      (Name
"multisets", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multisets_ [OpExpr Funcons] -> OpExpr Funcons
forall t. HasValues t => [OpExpr t] -> OpExpr t
VAL.multisets_)
    , (Name
"multiset", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multiset_ [OpExpr Funcons] -> OpExpr Funcons
forall t. (Ord t, HasValues t) => [OpExpr t] -> OpExpr t
VAL.multiset_)
    , (Name
"multiset-elements", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multiset_elements_ [OpExpr Funcons] -> OpExpr Funcons
forall t. HasValues t => [OpExpr t] -> OpExpr t
VAL.multiset_elements_)
    , (Name
"multiset-occurrences", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multiset_occurrences_ [OpExpr Funcons] -> OpExpr Funcons
forall t. (Ord t, HasValues t) => [OpExpr t] -> OpExpr t
VAL.multiset_occurrences_)
    , (Name
"multiset-insert", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multiset_insert_ [OpExpr Funcons] -> OpExpr Funcons
forall t. (Ord t, HasValues t) => [OpExpr t] -> OpExpr t
VAL.multiset_insert_)
    , (Name
"multiset-delete", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
multiset_delete_ [OpExpr Funcons] -> OpExpr Funcons
forall t. (Ord t, HasValues t) => [OpExpr t] -> OpExpr t
VAL.multiset_delete_)
    , (Name
"is-submultiset", ([Funcons] -> Funcons)
-> ([OpExpr Funcons] -> OpExpr Funcons) -> EvalFunction
fromValOp [Funcons] -> Funcons
is_submultiset_ [OpExpr Funcons] -> OpExpr Funcons
forall t. (Ord t, HasValues t) => [OpExpr t] -> OpExpr t
VAL.is_submultiset_)
    ]

multisets_ :: [Funcons] -> Funcons
multisets_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multisets"
multiset_ :: [Funcons] -> Funcons
multiset_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multiset"
multiset_elements_ :: [Funcons] -> Funcons
multiset_elements_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multiset-elements"
multiset_occurrences_ :: [Funcons] -> Funcons
multiset_occurrences_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multiset-occurrences"
multiset_insert_ :: [Funcons] -> Funcons
multiset_insert_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multiset-insert"
multiset_delete_ :: [Funcons] -> Funcons
multiset_delete_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"multiset-delete"
is_submultiset_ :: [Funcons] -> Funcons
is_submultiset_ = Name -> [Funcons] -> Funcons
applyFuncon Name
"is-submultiset"