hydra-kernel-0.16.0: src/main/haskell/Hydra/Lib/Eithers.hs
-- Note: this is an automatically generated file. Do not edit.
-- | Primitives in the hydra.lib.eithers module.
module Hydra.Lib.Eithers where
import qualified Hydra.Ast as Ast
import qualified Hydra.Coders as Coders
import qualified Hydra.Core as Core
import qualified Hydra.Error.Checking as Checking
import qualified Hydra.Error.Core as ErrorCore
import qualified Hydra.Error.Packaging as ErrorPackaging
import qualified Hydra.Errors as Errors
import qualified Hydra.Graph as Graph
import qualified Hydra.Json.Model as Model
import qualified Hydra.Packaging as Packaging
import qualified Hydra.Parsing as Parsing
import qualified Hydra.Paths as Paths
import qualified Hydra.Query as Query
import qualified Hydra.Relational as Relational
import qualified Hydra.Tabular as Tabular
import qualified Hydra.Testing as Testing
import qualified Hydra.Topology as Topology
import qualified Hydra.Typed as Typed
import qualified Hydra.Typing as Typing
import qualified Hydra.Util as Util
import qualified Hydra.Validation as Validation
import qualified Hydra.Variants as Variants
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
import qualified Data.Map as M
bimap :: Packaging.PrimitiveDefinition
bimap =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.bimap"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map over both sides of an either value."),
Packaging.entityMetadataComments = [
"bimap(f, g, e) applies f to the contained value if e is a Left, or g if e is a Right; the result retains the same Left/Right variant.",
"Total. Corresponds to Haskell's Data.Bifunctor.bimap :: (a -> c) -> (b -> d) -> Either a b -> Either c d."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "w"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "z"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "y")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "w"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg2"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "w"))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "g"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermEither (Left (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermEither (Right (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "g")),
Core.applicationArgument = (Core.TermVariable (Core.Name "y"))}))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Map over both sides of an Either, defined in terms of either.")))]))})))}
bind :: Packaging.PrimitiveDefinition
bind =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.bind"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Bind (flatMap) for either: if Right, apply the function; if Left, return unchanged."),
Packaging.entityMetadataComments = [
"bind(e, f) is the monadic bind for either with a fixed Left type: if e is Right v, the result is f(v); if e is Left x, the result is Left x with the Left type preserved.",
"Used to chain computations that may fail with a common error type.",
"Total. Corresponds to Haskell's (>>=) :: Either a b -> (b -> Either a c) -> Either a c."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "y")),
Core.functionTypeCodomain = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "z"))}))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "z"))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermEither (Left (Core.TermVariable (Core.Name "x"))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "f"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Monadic bind for Either, defined in terms of either.")))]))})))}
either :: Packaging.PrimitiveDefinition
either =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.either"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Eliminate an either value by applying one of two functions."),
Packaging.entityMetadataComments = [
"either(f, g, e) returns f(x) if e is Left x and g(y) if e is Right y.",
"The fundamental eliminator for the either type; every other primitive in this namespace can be derived from it.",
"Total. Corresponds to Haskell's either :: (a -> c) -> (b -> c) -> Either a b -> c."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "z"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "y")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "z"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg2"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeVariable (Core.Name "z"))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
foldl :: Packaging.PrimitiveDefinition
foldl =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.foldl"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Left-fold over a list with an Either-returning function, short-circuiting on Left."),
Packaging.entityMetadataComments = [
"foldl(f, acc0, xs) folds f over xs from the left, threading an accumulator of type a, where each application may fail with Left e: foldl iterates while f returns Right, propagates Left on the first failure, and returns Right (final accumulator) if all elements were processed. Equivalent to chaining bind over the list.",
"Total in the sense that it terminates on finite inputs; the result is a Left whenever any application of f returns one.",
"Corresponds to a short-circuiting variant of Haskell's foldM specialised to Either."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "y")),
Core.functionTypeCodomain = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "x"))}))}))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg2"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeVariable (Core.Name "y"))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "x"))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc0"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldl")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "el"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.bind")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "a"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "a"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "el"))}))}))}))}))}))})),
Core.applicationArgument = (Core.TermEither (Right (Core.TermVariable (Core.Name "acc0"))))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Either-short-circuiting left fold, defined in terms of bind.")))]))})))}
fromLeft :: Packaging.PrimitiveDefinition
fromLeft =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.fromLeft"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Extract the Left value, or return a default."),
Packaging.entityMetadataComments = [
"fromLeft(def, e) returns the contained Left value if e is a Left, or def if e is a Right.",
"Total. Corresponds to Haskell's Data.Either.fromLeft :: a -> Either a b -> a."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
Typing.parameterIsLazy = True},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeVariable (Core.Name "x"))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "def"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "def"))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Extract the Left value or return a default, defined in terms of either.")))]))})))}
fromRight :: Packaging.PrimitiveDefinition
fromRight =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.fromRight"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Extract the Right value, or return a default."),
Packaging.entityMetadataComments = [
"fromRight(def, e) returns the contained Right value if e is a Right, or def if e is a Left.",
"Total. Corresponds to Haskell's Data.Either.fromRight :: b -> Either a b -> b."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "y")),
Typing.parameterIsLazy = True},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeVariable (Core.Name "y"))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "def"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "def"))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Extract the Right value or return a default, defined in terms of either.")))]))})))}
isLeft :: Packaging.PrimitiveDefinition
isLeft =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.isLeft"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Check whether an either is a Left value."),
Packaging.entityMetadataComments = [
"True if the argument is a Left variant, false if a Right.",
"Total. Corresponds to Haskell's Data.Either.isLeft :: Either a b -> Bool."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeLiteral Core.LiteralTypeBoolean)}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLiteral (Core.LiteralBoolean True))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLiteral (Core.LiteralBoolean False))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Check whether an Either is a Left value, defined in terms of either.")))]))})))}
isRight :: Packaging.PrimitiveDefinition
isRight =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.isRight"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Check whether an either is a Right value."),
Packaging.entityMetadataComments = [
"True if the argument is a Right variant, false if a Left.",
"Total. Corresponds to Haskell's Data.Either.isRight :: Either a b -> Bool."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeLiteral Core.LiteralTypeBoolean)}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLiteral (Core.LiteralBoolean False))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLiteral (Core.LiteralBoolean True))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Check whether an Either is a Right value, defined in terms of either.")))]))})))}
lefts :: Packaging.PrimitiveDefinition
lefts =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.lefts"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Extract all Left values from a list of either values."),
Packaging.entityMetadataComments = [
"lefts(xs) returns a list containing every Left value in xs, in original order, with Right values discarded.",
"Total. Corresponds to Haskell's Data.Either.lefts :: [Either a b] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldr")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "l"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "l"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "acc"))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))}))})),
Core.applicationArgument = (Core.TermList [])})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Extract all Left values from a list of eithers, defined in terms of either + foldr.")))]))})))}
map :: Packaging.PrimitiveDefinition
map =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.map"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map a function over the Right side of an either (standard functor map)."),
Packaging.entityMetadataComments = [
"map(f, e) returns Right (f y) if e is Right y, or Left x unchanged if e is Left x.",
"The functor instance for either; treats the Right variant as the focus and leaves the Left variant alone.",
"Total. Corresponds to Haskell's fmap :: (a -> b) -> Either e a -> Either e b."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "y"))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "x"))})),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermEither (Left (Core.TermVariable (Core.Name "x"))))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermEither (Right (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "y"))}))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Map a function over the Right side, defined in terms of either.")))]))})))}
mapList :: Packaging.PrimitiveDefinition
mapList =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.mapList"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map a function returning either over a list, collecting results or short-circuiting on Left."),
Packaging.entityMetadataComments = [
"mapList(f, xs) applies f to each element of xs. If every application returns Right, the result is Right of the list of contained values, in original order. The first application that returns Left short-circuits the whole result to that Left.",
"Total. Corresponds to Haskell's traverse :: (a -> Either e b) -> [a] -> Either e [b]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeList (Core.TypeVariable (Core.Name "y")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldr")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.bind")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "ys"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "y"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "ys"))}))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))}))}))}))})),
Core.applicationArgument = (Core.TermEither (Right (Core.TermList [])))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Traverse a list with an Either-returning function, short-circuiting on Left.")))]))})))}
mapOptional :: Packaging.PrimitiveDefinition
mapOptional =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.mapOptional"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map a function returning either over an optional, or return Right none if none."),
Packaging.entityMetadataComments = [
"mapOptional(f, m) returns Right none if m is none; otherwise applies f to the contained value and returns the result with Right wrapped around given.",
"Total. Corresponds to Haskell's traverse :: (a -> Either e b) -> Maybe a -> Either e (Maybe b)."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeOptional (Core.TypeVariable (Core.Name "x"))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeOptional (Core.TypeVariable (Core.Name "y")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "m"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.optionals.cases")),
Core.applicationArgument = (Core.TermVariable (Core.Name "m"))})),
Core.applicationArgument = (Core.TermEither (Right (Core.TermOptional Nothing)))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermOptional (Just (Core.TermVariable (Core.Name "y"))))}))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))}))}))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Traverse an Optional with an Either-returning function.")))]))})))}
mapSet :: Packaging.PrimitiveDefinition
mapSet =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.mapSet"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map a function returning either over a set, collecting results or short-circuiting on Left."),
Packaging.entityMetadataComments = [
"mapSet(f, s) applies f to each element of s in unspecified order. If every application returns Right, the result is Right of the set of contained values (deduplicated by the result type's ordering); the first application returning Left short-circuits the whole result to that Left.",
"Total. Corresponds to Haskell's traverse-style operation specialised to Set."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "z"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "x")),
Core.functionTypeCodomain = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeSet (Core.TypeVariable (Core.Name "x"))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "z")),
Core.eitherTypeRight = (Core.TypeSet (Core.TypeVariable (Core.Name "y")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "f"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "s"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "ys"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList")),
Core.applicationArgument = (Core.TermVariable (Core.Name "ys"))}))}))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldr")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.bind")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "ys"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "y"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "ys"))}))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))}))}))}))})),
Core.applicationArgument = (Core.TermEither (Right (Core.TermList [])))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.toList")),
Core.applicationArgument = (Core.TermVariable (Core.Name "s"))}))}))}))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Traverse a Set with an Either-returning function, defined via list+set conversion.")))]))})))}
partitionEithers :: Packaging.PrimitiveDefinition
partitionEithers =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.partitionEithers"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Partition a list of either values into lefts and rights."),
Packaging.entityMetadataComments = [
"partitionEithers(xs) returns a pair (lefts, rights) where lefts contains every Left value from xs in original order and rights contains every Right value from xs in original order.",
"Total. Corresponds to Haskell's Data.Either.partitionEithers :: [Either a b] -> ([a], [b])."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
Core.pairTypeSecond = (Core.TypeList (Core.TypeVariable (Core.Name "y")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldr")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "l"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermPair (
Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "l"))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.first")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}),
(Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.second")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "r"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermPair (
Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.first")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}),
(Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "r"))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.second")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))}))})),
Core.applicationArgument = (Core.TermPair (Core.TermList [], (Core.TermList [])))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Partition a list of eithers into (lefts, rights), defined in terms of either + foldr.")))]))})))}
rights :: Packaging.PrimitiveDefinition
rights =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.eithers.rights"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Extract all Right values from a list of either values."),
Packaging.entityMetadataComments = [
"rights(xs) returns a list containing every Right value in xs, in original order, with Left values discarded.",
"Total. Corresponds to Haskell's Data.Either.rights :: [Either a b] -> [b]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeEither (Core.EitherType {
Core.eitherTypeLeft = (Core.TypeVariable (Core.Name "x")),
Core.eitherTypeRight = (Core.TypeVariable (Core.Name "y"))}))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeList (Core.TypeVariable (Core.Name "y")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermAnnotated (Core.AnnotatedTerm {
Core.annotatedTermBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.foldr")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "e"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "acc"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.eithers.either")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "_"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermVariable (Core.Name "acc"))}))})),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "r"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.cons")),
Core.applicationArgument = (Core.TermVariable (Core.Name "r"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "e"))}))}))}))})),
Core.applicationArgument = (Core.TermList [])})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))})),
Core.annotatedTermAnnotation = (Core.TermMap (M.fromList [
(
Core.TermVariable (Core.Name "description"),
(Core.TermLiteral (Core.LiteralString "Extract all Right values from a list of eithers, defined in terms of either + foldr.")))]))})))}