hydra-kernel-0.17.1: src/main/haskell/Hydra/Lib/Lists.hs
-- Note: this is an automatically generated file. Do not edit.
-- | Primitives in the hydra.lib.lists module.
module Hydra.Lib.Lists where
import qualified Hydra.Ast as Ast
import qualified Hydra.Coders as Coders
import qualified Hydra.Core as Core
import qualified Hydra.Docs as Docs
import qualified Hydra.Error.Checking as Checking
import qualified Hydra.Error.Core as ErrorCore
import qualified Hydra.Error.File as ErrorFile
import qualified Hydra.Error.Packaging as ErrorPackaging
import qualified Hydra.Error.System as ErrorSystem
import qualified Hydra.Errors as Errors
import qualified Hydra.File as File
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.System as System
import qualified Hydra.Tabular as Tabular
import qualified Hydra.Testing as Testing
import qualified Hydra.Time as Time
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
apply :: Packaging.PrimitiveDefinition
apply =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.apply"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Apply a list of functions to a list of values (applicative style)."),
Packaging.entityMetadataComments = [
"apply(fs, xs) returns the list of all f x for f in fs and x in xs, in order: for each f in fs (outer loop), for each x in xs (inner loop).",
"Equivalent to the applicative list instance.",
"Total. Corresponds to Haskell's (<*>) :: [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.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.TypeList (Core.TypeVariable (Core.Name "x"))),
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 = Nothing}
bind :: Packaging.PrimitiveDefinition
bind =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.bind"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Apply a function that returns lists to each element and flatten the results."),
Packaging.entityMetadataComments = [
"bind(xs, f) applies f to each element of xs and concatenates the resulting lists in order. Equivalent to concatMap.",
"Total. Corresponds to Haskell's (>>=) :: [a] -> (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.TypeVariable (Core.Name "x"))),
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 "x")),
Core.functionTypeCodomain = (Core.TypeList (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.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
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.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.lists.concat2")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))}))})),
Core.applicationArgument = (Core.TermList [])})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))}
concat :: Packaging.PrimitiveDefinition
concat =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.concat"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Concatenate a list of lists."),
Packaging.entityMetadataComments = [
"concat(xss) returns the list obtained by appending all the lists in xss in order.",
"Total. Corresponds to Haskell's concat :: [[a]] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "x")))),
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 = Nothing}
concat2 :: Packaging.PrimitiveDefinition
concat2 =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.concat2"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Concatenate two lists."),
Packaging.entityMetadataComments = [
"concat2(xs, ys) returns xs with ys appended.",
"Total. Corresponds to Haskell's (++) :: [a] -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
cons :: Packaging.PrimitiveDefinition
cons =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.cons"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Prepend a value to a list."),
Packaging.entityMetadataComments = [
"cons(x, xs) returns a list whose head is x and whose tail is xs.",
"Total. Corresponds to Haskell's (:) :: a -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
drop :: Packaging.PrimitiveDefinition
drop =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.drop"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Drop the first n elements from a list."),
Packaging.entityMetadataComments = [
"drop(n, xs) returns the suffix of xs after dropping the first n elements; if n is greater than or equal to length(xs) the result is the empty list; if n is non-positive the result is xs unchanged.",
"Total. Corresponds to Haskell's drop :: Int -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
dropWhile :: Packaging.PrimitiveDefinition
dropWhile =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.dropWhile"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Drop elements from the beginning of a list while the predicate is true."),
Packaging.entityMetadataComments = [
"dropWhile(p, xs) returns the suffix of xs starting at the first element for which p returns false. If p is true for every element, the result is the empty list.",
"Total. Corresponds to Haskell's dropWhile :: (a -> Bool) -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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.TypeLiteral Core.LiteralTypeBoolean)})),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "p"),
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.TermVariable (Core.Name "hydra.lib.pairs.second")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.span")),
Core.applicationArgument = (Core.TermVariable (Core.Name "p"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))}))})))}
elem :: Packaging.PrimitiveDefinition
elem =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.elem"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Test whether an element is in a list."),
Packaging.entityMetadataComments = [
"elem(x, xs) returns true iff some element of xs is equal to x.",
"Requires an 'equality' constraint on the element type.",
"Total. Corresponds to Haskell's elem :: Eq a => a -> [a] -> Bool."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = [
Core.TypeClassConstraintSimple (Core.Name "equality")]}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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.TypeLiteral Core.LiteralTypeBoolean)}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
filter :: Packaging.PrimitiveDefinition
filter =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.filter"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Filter a list by a predicate."),
Packaging.entityMetadataComments = [
"filter(p, xs) returns the list of elements x in xs for which p(x) is true, in original order.",
"Total. Corresponds to Haskell's filter :: (a -> Bool) -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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.TypeLiteral Core.LiteralTypeBoolean)})),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "p"),
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.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.logic.ifElse")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "p")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (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 "x"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))}))})),
Core.applicationArgument = (Core.TermList [])})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))}
find :: Packaging.PrimitiveDefinition
find =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.find"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Find the first element matching a predicate."),
Packaging.entityMetadataComments = [
"find(p, xs) returns Just(x) where x is the first element of xs for which p(x) is true, or Nothing if no such element exists.",
"Total. Corresponds to Haskell's find :: (a -> Bool) -> [a] -> Maybe a."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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.TypeLiteral Core.LiteralTypeBoolean)})),
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.TypeOptional (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "p"),
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.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.logic.ifElse")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "p")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (Core.TermOptional (Just (Core.TermVariable (Core.Name "x"))))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))}))}))})),
Core.applicationArgument = (Core.TermOptional Nothing)})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))}
foldl :: Packaging.PrimitiveDefinition
foldl =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.foldl"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Left-fold a list with an accumulator."),
Packaging.entityMetadataComments = [
"foldl(f, acc0, xs) reduces xs left-associatively: foldl(f, acc0, [x1, x2, ..., xn]) = f(f(f(acc0, x1), x2), ..., xn). For the empty list the result is acc0.",
"Strict in the accumulator on hosts where laziness would otherwise leak space.",
"Total on finite inputs. Corresponds to Haskell's foldl' :: (b -> a -> b) -> b -> [a] -> b."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "y"),
Typing.typeParameterConstraints = []},
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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 "y")),
Core.functionTypeCodomain = (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.TypeVariable (Core.Name "y")),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg2"),
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.TypeVariable (Core.Name "y"))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
foldr :: Packaging.PrimitiveDefinition
foldr =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.foldr"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Right-fold a list with an accumulator."),
Packaging.entityMetadataComments = [
"foldr(f, acc0, xs) reduces xs right-associatively: foldr(f, acc0, [x1, ..., xn]) = f(x1, f(x2, ..., f(xn, acc0))). For the empty list the result is acc0.",
"Total on finite inputs. Corresponds to Haskell's foldr :: (a -> b -> b) -> 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.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.TypeVariable (Core.Name "y"))}))})),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "y")),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg2"),
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.TypeVariable (Core.Name "y"))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
group :: Packaging.PrimitiveDefinition
group =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.group"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Group consecutive equal elements."),
Packaging.entityMetadataComments = [
"group(xs) returns a list of lists obtained by grouping consecutive equal elements of xs together. Each inner list is non-empty and contains equal elements; the concatenation of the result equals xs.",
"Equality is determined by the element type's 'equality' constraint.",
"Total. Corresponds to Haskell's Data.List.group :: Eq a => [a] -> [[a]]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = [
Core.TypeClassConstraintSimple (Core.Name "equality")]}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "x"))))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
intercalate :: Packaging.PrimitiveDefinition
intercalate =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.intercalate"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Intercalate a list of lists with a separator list between each."),
Packaging.entityMetadataComments = [
"intercalate(sep, xss) returns the concatenation of xss with sep inserted between consecutive lists. Equivalent to concat(intersperse(sep, xss)).",
"Total. Corresponds to Haskell's intercalate :: [a] -> [[a]] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "x")))),
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 = Nothing}
intersperse :: Packaging.PrimitiveDefinition
intersperse =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.intersperse"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Intersperse a value between consecutive elements of a list."),
Packaging.entityMetadataComments = [
"intersperse(sep, xs) returns xs with sep inserted between each pair of adjacent elements; for lists of length 0 or 1 the input is returned unchanged.",
"Total. Corresponds to Haskell's intersperse :: a -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
length :: Packaging.PrimitiveDefinition
length =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.length"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return the length of a list."),
Packaging.entityMetadataComments = [
"length(xs) returns the number of elements in xs as an int32. Returns 0 for the empty list.",
"Total on finite inputs; the int32 result overflows for lists longer than 2^31-1 elements.",
"Corresponds to Haskell's length :: [a] -> Int (with narrowing to Int32)."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
map :: Packaging.PrimitiveDefinition
map =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.map"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Map a function over a list."),
Packaging.entityMetadataComments = [
"map(f, xs) returns the list of f(x) for each x in xs, in original order.",
"Total. Corresponds to Haskell's map :: (a -> b) -> [a] -> [b] / fmap on lists."],
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.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.TypeList (Core.TypeVariable (Core.Name "x"))),
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 = Nothing}
maybeAt :: Packaging.PrimitiveDefinition
maybeAt =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.maybeAt"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return the element at the given index, or Nothing if out of bounds."),
Packaging.entityMetadataComments = [
"maybeAt(i, xs) returns Just(xs[i]) if 0 <= i < length(xs), or Nothing otherwise.",
"Total. Wraps the Haskell (!!) operator, which is partial, in maybe to make out-of-bounds total."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
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.TypeOptional (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
maybeHead :: Packaging.PrimitiveDefinition
maybeHead =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.maybeHead"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return the first element, or Nothing if the list is empty."),
Packaging.entityMetadataComments = [
"maybeHead(xs) returns Just(x) where x is the first element of xs, or Nothing if xs is empty.",
"Total. Wraps Haskell's partial head in maybe."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeOptional (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
maybeInit :: Packaging.PrimitiveDefinition
maybeInit =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.maybeInit"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return all elements except the last, or Nothing if the list is empty."),
Packaging.entityMetadataComments = [
"maybeInit(xs) returns Just(ys) where ys is xs with its last element removed, or Nothing if xs is empty.",
"Total. Wraps Haskell's partial init in maybe."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeOptional (Core.TypeList (Core.TypeVariable (Core.Name "x"))))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
maybeLast :: Packaging.PrimitiveDefinition
maybeLast =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.maybeLast"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return the last element, or Nothing if the list is empty."),
Packaging.entityMetadataComments = [
"maybeLast(xs) returns Just(x) where x is the last element of xs, or Nothing if xs is empty.",
"Total. Wraps Haskell's partial last in maybe."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeOptional (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
maybeTail :: Packaging.PrimitiveDefinition
maybeTail =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.maybeTail"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Return all elements except the first, or Nothing if the list is empty."),
Packaging.entityMetadataComments = [
"maybeTail(xs) returns Just(ys) where ys is xs with its first element removed, or Nothing if xs is empty.",
"Total. Wraps Haskell's partial tail in maybe."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeOptional (Core.TypeList (Core.TypeVariable (Core.Name "x"))))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
nub :: Packaging.PrimitiveDefinition
nub =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.nub"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Remove duplicate elements from a list."),
Packaging.entityMetadataComments = [
"nub(xs) returns the list of distinct elements of xs, in the order of their first occurrence.",
"Requires an 'equality' constraint on the element type.",
"Quadratic in the length of xs in the worst case.",
"Total. Corresponds to Haskell's Data.List.nub :: Eq a => [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = [
Core.TypeClassConstraintSimple (Core.Name "equality")]}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
null :: Packaging.PrimitiveDefinition
null =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.null"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Test whether a list is empty."),
Packaging.entityMetadataComments = [
"null(xs) returns true iff xs is the empty list.",
"Total. Corresponds to Haskell's null :: [a] -> Bool."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeLiteral Core.LiteralTypeBoolean)}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
partition :: Packaging.PrimitiveDefinition
partition =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.partition"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Partition a list into elements that satisfy a predicate and those that do not."),
Packaging.entityMetadataComments = [
"partition(p, xs) returns a pair (yes, no) where yes is the list of elements of xs for which p is true and no is the list of elements for which p is false, each preserving original order.",
"Total. Corresponds to Haskell's partition :: (a -> Bool) -> [a] -> ([a], [a])."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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.TypeLiteral Core.LiteralTypeBoolean)})),
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.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
Core.pairTypeSecond = (Core.TypeList (Core.TypeVariable (Core.Name "x")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "p"),
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.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.logic.ifElse")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "p")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})),
Core.applicationArgument = (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 "x"))})),
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.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 "x"))})),
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.TermPair (Core.TermList [], (Core.TermList [])))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))}
pure :: Packaging.PrimitiveDefinition
pure =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.pure"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Wrap a value in a single-element list."),
Packaging.entityMetadataComments = [
"pure(x) = [x]. The applicative pure for lists.",
"Total. Corresponds to Haskell's pure :: a -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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 = Nothing}
replicate :: Packaging.PrimitiveDefinition
replicate =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.replicate"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Build a list of n copies of a value."),
Packaging.entityMetadataComments = [
"replicate(n, x) returns a list of n copies of x; for n <= 0 the result is the empty list.",
"Total. Corresponds to Haskell's replicate :: Int -> a -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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 = Nothing}
reverse :: Packaging.PrimitiveDefinition
reverse =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.reverse"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Reverse a list."),
Packaging.entityMetadataComments = [
"reverse(xs) returns the elements of xs in reverse order.",
"Total. Corresponds to Haskell's reverse :: [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
singleton :: Packaging.PrimitiveDefinition
singleton =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.singleton"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Construct a single-element list."),
Packaging.entityMetadataComments = [
"singleton(x) = [x]. Identical to pure for lists.",
"Total. Corresponds to Haskell's singleton :: a -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeVariable (Core.Name "x")),
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 = Nothing}
sort :: Packaging.PrimitiveDefinition
sort =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.sort"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Sort a list."),
Packaging.entityMetadataComments = [
"sort(xs) returns xs sorted in ascending order under the element type's ordering. Sort is stable: equal elements preserve their original relative order.",
"Requires an 'ordering' constraint on the element type.",
"Total. Corresponds to Haskell's Data.List.sort :: Ord a => [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = [
Core.TypeClassConstraintSimple (Core.Name "ordering")]}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
sortOn :: Packaging.PrimitiveDefinition
sortOn =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.sortOn"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Sort a list using a key-extraction function."),
Packaging.entityMetadataComments = [
"sortOn(f, xs) returns xs sorted in ascending order by f(x) for each element x. Sort is stable: elements with equal keys preserve their original relative order.",
"Requires an 'ordering' constraint on the key type.",
"Total. Corresponds to Haskell's Data.List.sortOn :: Ord b => (a -> b) -> [a] -> [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 = [
Core.TypeClassConstraintSimple (Core.Name "ordering")]}],
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.TypeList (Core.TypeVariable (Core.Name "x"))),
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 = Nothing}
span :: Packaging.PrimitiveDefinition
span =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.span"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Split a list at the first element where the predicate fails."),
Packaging.entityMetadataComments = [
"span(p, xs) returns a pair (ys, zs) where ys is the longest prefix of xs whose elements all satisfy p, and zs is the remainder of xs starting at the first element that fails p (or zs is empty if all elements satisfy p).",
"Total. Corresponds to Haskell's span :: (a -> Bool) -> [a] -> ([a], [a])."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
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.TypeLiteral Core.LiteralTypeBoolean)})),
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.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeList (Core.TypeVariable (Core.Name "x"))),
Core.pairTypeSecond = (Core.TypeList (Core.TypeVariable (Core.Name "x")))}))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = (Just (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "p"),
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 "x"),
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.logic.ifElse")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.logic.and")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.null")),
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.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "p")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))}))})),
Core.applicationArgument = (Core.TermPair (
Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.concat2")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.first")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))})),
Core.applicationArgument = (Core.TermList [
Core.TermVariable (Core.Name "x")])}),
(Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.pairs.second")),
Core.applicationArgument = (Core.TermVariable (Core.Name "acc"))}))))})),
Core.applicationArgument = (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.concat2")),
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.TermList [
Core.TermVariable (Core.Name "x")])}))))}))}))}))})),
Core.applicationArgument = (Core.TermPair (Core.TermList [], (Core.TermList [])))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))}
take :: Packaging.PrimitiveDefinition
take =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.take"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Take the first n elements of a list."),
Packaging.entityMetadataComments = [
"take(n, xs) returns the prefix of xs of length min(n, length(xs)); if n is non-positive the result is the empty list.",
"Total. Corresponds to Haskell's take :: Int -> [a] -> [a]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
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.TypeList (Core.TypeVariable (Core.Name "x")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
transpose :: Packaging.PrimitiveDefinition
transpose =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.transpose"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Transpose a list of lists."),
Packaging.entityMetadataComments = [
"transpose(xss) returns a list of lists where the i-th inner list contains the i-th element of every inner list of xss that has at least i+1 elements. Inner lists of differing lengths produce a ragged result rather than an error.",
"Total. Corresponds to Haskell's Data.List.transpose :: [[a]] -> [[a]]."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "x")))),
Typing.parameterIsLazy = False}],
Typing.termSignatureResult = Typing.Result {
Typing.resultDescription = Nothing,
Typing.resultType = (Core.TypeList (Core.TypeList (Core.TypeVariable (Core.Name "x"))))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
uncons :: Packaging.PrimitiveDefinition
uncons =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.uncons"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Decompose a list into its head and tail, or Nothing if empty."),
Packaging.entityMetadataComments = [
"uncons(xs) returns Just(head, tail) where head is the first element of xs and tail is the remaining list, or Nothing if xs is empty.",
"Total. Corresponds to Haskell's Data.List.uncons :: [a] -> Maybe (a, [a])."],
Packaging.entityMetadataSeeAlso = [],
Packaging.entityMetadataLifecycle = Nothing})),
Packaging.primitiveDefinitionSignature = Typing.TermSignature {
Typing.termSignatureTypeParameters = [
Typing.TypeParameter {
Typing.typeParameterName = (Core.Name "x"),
Typing.typeParameterConstraints = []}],
Typing.termSignatureParameters = [
Typing.Parameter {
Typing.parameterName = (Core.Name "arg0"),
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.TypeOptional (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "x")),
Core.pairTypeSecond = (Core.TypeList (Core.TypeVariable (Core.Name "x")))})))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
zip :: Packaging.PrimitiveDefinition
zip =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.zip"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Zip two lists element-wise into pairs."),
Packaging.entityMetadataComments = [
"zip(xs, ys) returns the list of pairs (xs[i], ys[i]) for i from 0 to min(length(xs), length(ys))-1. The result has length equal to the shorter of the two inputs.",
"Total. Corresponds to Haskell's zip :: [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.TypeVariable (Core.Name "x"))),
Typing.parameterIsLazy = False},
Typing.Parameter {
Typing.parameterName = (Core.Name "arg1"),
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.TypeList (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "x")),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "y"))})))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}
zipWith :: Packaging.PrimitiveDefinition
zipWith =
Packaging.PrimitiveDefinition {
Packaging.primitiveDefinitionName = (Core.Name "hydra.lib.lists.zipWith"),
Packaging.primitiveDefinitionMetadata = (Just (Packaging.EntityMetadata {
Packaging.entityMetadataDescription = (Just "Zip two lists with a combining function."),
Packaging.entityMetadataComments = [
"zipWith(f, xs, ys) returns the list of f(xs[i], ys[i]) for i from 0 to min(length(xs), length(ys))-1. The result has length equal to the shorter of the two inputs.",
"Total. Corresponds to Haskell's zipWith :: (a -> b -> c) -> [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.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 "arg1"),
Typing.parameterDescription = Nothing,
Typing.parameterType = (Core.TypeList (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.TypeList (Core.TypeVariable (Core.Name "z")))}},
Packaging.primitiveDefinitionIsPure = True,
Packaging.primitiveDefinitionIsTotal = True,
Packaging.primitiveDefinitionDefaultImplementation = Nothing}