packages feed

hydra-0.5.0: src/main/haskell/Hydra/Dsl/Lib/Optionals.hs

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 = Datum $ Terms.primitive _optionals_apply

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

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

fromMaybe :: Datum (a -> Maybe a -> a)
fromMaybe = Datum $ Terms.primitive _optionals_fromMaybe

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

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

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

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

pure :: Datum (a -> Maybe a)
pure = Datum $ Terms.primitive _optionals_pure