module Hydra.Dsl.Lib.Optionals where

import Hydra.Phantoms
import Hydra.Sources.Libraries
import qualified Hydra.Dsl.Terms as Terms


apply :: Datum (Maybe (a -> b) -> Maybe a -> Maybe b)
apply :: forall a b. Datum (Maybe (a -> b) -> Maybe a -> Maybe b)
apply = Term -> Datum (Maybe (a -> b) -> Maybe a -> Maybe b)
forall a. Term -> Datum a
Datum (Term -> Datum (Maybe (a -> b) -> Maybe a -> Maybe b))
-> Term -> Datum (Maybe (a -> b) -> Maybe a -> Maybe b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_apply

bind :: Datum (Maybe a -> (a -> Maybe b) -> Maybe b)
bind :: forall a b. Datum (Maybe a -> (a -> Maybe b) -> Maybe b)
bind = Term -> Datum (Maybe a -> (a -> Maybe b) -> Maybe b)
forall a. Term -> Datum a
Datum (Term -> Datum (Maybe a -> (a -> Maybe b) -> Maybe b))
-> Term -> Datum (Maybe a -> (a -> Maybe b) -> Maybe b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_bind

cat :: Datum ([Maybe a] -> [a])
cat :: forall a. Datum ([Maybe a] -> [a])
cat = Term -> Datum ([Maybe a] -> [a])
forall a. Term -> Datum a
Datum (Term -> Datum ([Maybe a] -> [a]))
-> Term -> Datum ([Maybe a] -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_cat

fromMaybe :: Datum (a -> Maybe a -> a)
fromMaybe :: forall a. Datum (a -> Maybe a -> a)
fromMaybe = Term -> Datum (a -> Maybe a -> a)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Maybe a -> a))
-> Term -> Datum (a -> Maybe a -> a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_fromMaybe

isJust :: Datum (Maybe a -> Bool)
isJust :: forall a. Datum (Maybe a -> Bool)
isJust = Term -> Datum (Maybe a -> Bool)
forall a. Term -> Datum a
Datum (Term -> Datum (Maybe a -> Bool))
-> Term -> Datum (Maybe a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_isJust

isNothing :: Datum (Maybe a -> Bool)
isNothing :: forall a. Datum (Maybe a -> Bool)
isNothing = Term -> Datum (Maybe a -> Bool)
forall a. Term -> Datum a
Datum (Term -> Datum (Maybe a -> Bool))
-> Term -> Datum (Maybe a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_isNothing

map :: Datum ((a -> b) -> Maybe a -> Maybe b)
map :: forall a b. Datum ((a -> b) -> Maybe a -> Maybe b)
map = Term -> Datum ((a -> b) -> Maybe a -> Maybe b)
forall a. Term -> Datum a
Datum (Term -> Datum ((a -> b) -> Maybe a -> Maybe b))
-> Term -> Datum ((a -> b) -> Maybe a -> Maybe b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_map

maybe :: Datum (b -> (a -> b) -> Maybe a -> b)
maybe :: forall b a. Datum (b -> (a -> b) -> Maybe a -> b)
maybe = Term -> Datum (b -> (a -> b) -> Maybe a -> b)
forall a. Term -> Datum a
Datum (Term -> Datum (b -> (a -> b) -> Maybe a -> b))
-> Term -> Datum (b -> (a -> b) -> Maybe a -> b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_maybe

pure :: Datum (a -> Maybe a)
pure :: forall a. Datum (a -> Maybe a)
pure = Term -> Datum (a -> Maybe a)
forall a. Term -> Datum a
Datum (Term -> Datum (a -> Maybe a)) -> Term -> Datum (a -> Maybe a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_optionals_pure