hydra-0.15.0: src/test/haskell/Hydra/Test/Inference/Classes.hs
-- Note: this is an automatically generated file. Do not edit.
-- | Inference tests for type class constraints (ordering and equality)
module Hydra.Test.Inference.Classes where
import qualified Hydra.Core as Core
import qualified Hydra.Inference as Inference
import qualified Hydra.Lib.Eithers as Eithers
import qualified Hydra.Lib.Pairs as Pairs
import qualified Hydra.Lib.Strings as Strings
import qualified Hydra.Show.Core as ShowCore
import qualified Hydra.Test.TestGraph as TestGraph
import qualified Hydra.Testing as Testing
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
import qualified Data.Map as M
import qualified Data.Set as S
-- | Type class constraint inference tests
allTests :: Testing.TestGroup
allTests =
Testing.TestGroup {
Testing.testGroupName = "Type classes",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
testGroupForMonomorphicConstraints,
testGroupForPrimitiveReferences,
testGroupForPartialApplication,
testGroupForLetBindings,
testGroupForComposition,
testGroupForNestedContainers,
testGroupForCollectionTerms],
Testing.testGroupCases = []}
testGroupForCollectionTerms :: Testing.TestGroup
testGroupForCollectionTerms =
Testing.TestGroup {
Testing.testGroupName = "Collection term constraints",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Set literals",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermSet (S.fromList [
Core.TermVariable (Core.Name "x")]))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "y"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermSet (S.fromList [
Core.TermVariable (Core.Name "x"),
(Core.TermVariable (Core.Name "y"))]))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermSet (S.fromList [
Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1)),
(Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 2)))])))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeSet (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]}]},
Testing.TestGroup {
Testing.testGroupName = "Map literals",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "k"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "v"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermMap (M.fromList [
(Core.TermVariable (Core.Name "k"), (Core.TermVariable (Core.Name "v")))]))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t1")),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermMap (M.fromList [
(Core.TermLiteral (Core.LiteralString "a"), (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1))))])))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]}]},
Testing.TestGroup {
Testing.testGroupName = "Collection terms with primitives",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermSet (S.fromList [
Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.math.negate")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}),
(Core.TermVariable (Core.Name "x"))]))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "k"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermMap (M.fromList [
(Core.TermVariable (Core.Name "k"), (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.sort")),
Core.applicationArgument = (Core.TermList [
Core.TermVariable (Core.Name "k")])})))]))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeList (Core.TypeVariable (Core.Name "t0")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]}]},
Testing.TestGroup {
Testing.testGroupName = "Constraint propagation through collection elements",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermMap (M.fromList [
(Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.length")),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}), (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList")),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))})))]))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32)),
Core.mapTypeValues = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermList [
Core.TermVariable (Core.Name "hydra.lib.lists.sort")]))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeList (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0")))}))),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermPair (Core.TermVariable (Core.Name "hydra.lib.sets.fromList"), (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 42))))))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))})),
Core.pairTypeSecond = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#4",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xs"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermSet (S.fromList [
Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList")),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))})]))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = [
Testing.Tag "disabledForMinimalInference"]}]}],
Testing.testGroupCases = []}
testGroupForComposition :: Testing.TestGroup
testGroupForComposition =
Testing.TestGroup {
Testing.testGroupName = "Composition and constraint merging",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Composing constrained primitives",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (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.maps.fromList")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermPair (Core.TermVariable (Core.Name "x"), (Core.TermVariable (Core.Name "x"))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t0"))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (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.TermVariable (Core.Name "hydra.lib.sets.fromList")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.map")),
Core.applicationArgument = (Core.TermVariable (Core.Name "f"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t1", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Composing map and sort",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (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.TermVariable (Core.Name "hydra.lib.maps.map")),
Core.applicationArgument = (Core.TermVariable (Core.Name "hydra.lib.lists.sort"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "m"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeList (Core.TypeVariable (Core.Name "t1")))})),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeList (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])}),
(Core.Name "t1", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}
testGroupForLetBindings :: Testing.TestGroup
testGroupForLetBindings =
Testing.TestGroup {
Testing.testGroupName = "Let binding constraint propagation",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Simple let-bound wrappers",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "lookup"),
Core.bindingTerm = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "k"),
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.TermVariable (Core.Name "hydra.lib.maps.lookup")),
Core.applicationArgument = (Core.TermVariable (Core.Name "k"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "m"))}))}))})),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermVariable (Core.Name "lookup"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeMaybe (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "member"),
Core.bindingTerm = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
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.sets.member")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "s"))}))}))})),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermVariable (Core.Name "member"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "fromList"),
Core.bindingTerm = (Core.TermVariable (Core.Name "hydra.lib.maps.fromList")),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermVariable (Core.Name "fromList"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "t0")),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "t1"))}))),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Let-bound with partial instantiation",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "f"),
Core.bindingTerm = (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.TermVariable (Core.Name "hydra.lib.maps.map")),
Core.applicationArgument = (Core.TermVariable (Core.Name "hydra.lib.math.negate"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "m"))}))})),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermVariable (Core.Name "f"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "f"),
Core.bindingTerm = (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.sets.fromList")),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))})),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermVariable (Core.Name "f"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Multiple uses of a constrained let binding",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLet (Core.Let {
Core.letBindings = [
Core.Binding {
Core.bindingName = (Core.Name "f"),
Core.bindingTerm = (Core.TermVariable (Core.Name "hydra.lib.maps.fromList")),
Core.bindingTypeScheme = Nothing}],
Core.letBody = (Core.TermPair (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermList [
Core.TermPair (Core.TermLiteral (Core.LiteralString "a"), (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1))))])}), (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "f")),
Core.applicationArgument = (Core.TermList [
Core.TermPair (Core.TermLiteral (Core.LiteralBoolean True), (Core.TermLiteral (Core.LiteralString "x")))])}))))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.pairTypeSecond = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeBoolean),
Core.mapTypeValues = (Core.TypeLiteral Core.LiteralTypeString)}))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}
testGroupForMonomorphicConstraints :: Testing.TestGroup
testGroupForMonomorphicConstraints =
Testing.TestGroup {
Testing.testGroupName = "Monomorphic (constraints vanish)",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Map operations with concrete types",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.fromList")),
Core.applicationArgument = (Core.TermList [
Core.TermPair (Core.TermLiteral (Core.LiteralString "a"), (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1))))])})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.lookup")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "k"))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.singleton")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "k"))})),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 42)))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeMaybe (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.insert")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "k"))})),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 42)))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "hydra.lib.maps.empty"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Set operations with concrete types",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList")),
Core.applicationArgument = (Core.TermList [
Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1)),
(Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 2))),
(Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 3)))])})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeSet (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.member")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 42)))})),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.singleton")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 42)))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeLiteral Core.LiteralTypeBoolean),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Equality operations with concrete types",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.equality.equal")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1)))})),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 2)))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeLiteral Core.LiteralTypeBoolean),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.equality.compare")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "a"))})),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "b"))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeVariable (Core.Name "hydra.util.Comparison")),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "List operations with concrete types",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.sort")),
Core.applicationArgument = (Core.TermList [
Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 3)),
(Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 1))),
(Core.TermLiteral (Core.LiteralInteger (Core.IntegerValueInt32 2)))])})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [],
Core.typeSchemeBody = (Core.TypeList (Core.TypeLiteral (Core.LiteralTypeInteger Core.IntegerTypeInt32))),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}
testGroupForNestedContainers :: Testing.TestGroup
testGroupForNestedContainers =
Testing.TestGroup {
Testing.testGroupName = "Nested containers",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Maps of sets",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (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.TermVariable (Core.Name "hydra.lib.maps.map")),
Core.applicationArgument = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "m"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeList (Core.TypeVariable (Core.Name "t1")))})),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeSet (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])}),
(Core.Name "t1", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Sets of sets",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "xss"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.map")),
Core.applicationArgument = (Core.TermVariable (Core.Name "hydra.lib.sets.fromList"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xss"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeList (Core.TypeVariable (Core.Name "t0")))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Map from sorted list",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (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.maps.fromList")),
Core.applicationArgument = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.lists.map")),
Core.applicationArgument = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermPair (Core.TermVariable (Core.Name "x"), (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.singleton")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))))}))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "xs"))}))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}
testGroupForPartialApplication :: Testing.TestGroup
testGroupForPartialApplication =
Testing.TestGroup {
Testing.testGroupName = "Partial application preserving constraints",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Map partial application",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "k"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.lookup")),
Core.applicationArgument = (Core.TermVariable (Core.Name "k"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeMaybe (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "k"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "v"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.singleton")),
Core.applicationArgument = (Core.TermVariable (Core.Name "k"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "v"))}))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t1")),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Set partial application",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.sets.member")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Equality partial application",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "x"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (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.equality.equal")),
Core.applicationArgument = (Core.TermVariable (Core.Name "x"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "y"))}))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "equality"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Partial application fixing the constrained variable",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermLambda (Core.Lambda {
Core.lambdaParameter = (Core.Name "v"),
Core.lambdaDomain = Nothing,
Core.lambdaBody = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermApplication (Core.Application {
Core.applicationFunction = (Core.TermVariable (Core.Name "hydra.lib.maps.singleton")),
Core.applicationArgument = (Core.TermLiteral (Core.LiteralString "key"))})),
Core.applicationArgument = (Core.TermVariable (Core.Name "v"))}))})))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeLiteral Core.LiteralTypeString),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t0"))}))})),
Core.typeSchemeConstraints = Nothing}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}
testGroupForPrimitiveReferences :: Testing.TestGroup
testGroupForPrimitiveReferences =
Testing.TestGroup {
Testing.testGroupName = "Primitive references with constraints",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [
Testing.TestGroup {
Testing.testGroupName = "Map primitives (ordering on key type)",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.maps.fromList")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypePair (Core.PairType {
Core.pairTypeFirst = (Core.TypeVariable (Core.Name "t0")),
Core.pairTypeSecond = (Core.TypeVariable (Core.Name "t1"))}))),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.maps.lookup")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeMaybe (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.maps.insert")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t1")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))}))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#4",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.maps.map")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1"),
(Core.Name "t2")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t2")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t0"))})),
Core.functionTypeCodomain = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t2")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))}))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t2", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#5",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.maps.empty")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeMap (Core.MapType {
Core.mapTypeKeys = (Core.TypeVariable (Core.Name "t0")),
Core.mapTypeValues = (Core.TypeVariable (Core.Name "t1"))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Set primitives (ordering on element type)",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.sets.fromList")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.sets.member")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.sets.insert")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#4",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.sets.map")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0",
(Core.Name "t1")],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "t1"))})),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeSet (Core.TypeVariable (Core.Name "t1")))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])}),
(Core.Name "t1", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "Equality primitives",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.equality.equal")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "equality"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.equality.compare")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeVariable (Core.Name "hydra.util.Comparison"))}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]},
Testing.TestGroup {
Testing.testGroupName = "List primitives with constraints",
Testing.testGroupDescription = Nothing,
Testing.testGroupSubgroups = [],
Testing.testGroupCases = [
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#1",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.lists.sort")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0")))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "ordering"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#2",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.lists.nub")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0")))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "equality"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []},
Testing.TestCaseWithMetadata {
Testing.testCaseWithMetadataName = "#3",
Testing.testCaseWithMetadataCase = (Testing.TestCaseUniversal (Testing.UniversalTestCase {
Testing.universalTestCaseActual = (Eithers.either (\e -> Strings.cat2 "INFERENCE ERROR: " "failed") (\result -> ShowCore.typeScheme (Pairs.second (Pairs.first result))) (Inference.inferTypeOf TestGraph.testContext TestGraph.testGraph (Core.TermVariable (Core.Name "hydra.lib.lists.elem")))),
Testing.universalTestCaseExpected = (ShowCore.typeScheme (Core.TypeScheme {
Core.typeSchemeVariables = [
Core.Name "t0"],
Core.typeSchemeBody = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeVariable (Core.Name "t0")),
Core.functionTypeCodomain = (Core.TypeFunction (Core.FunctionType {
Core.functionTypeDomain = (Core.TypeList (Core.TypeVariable (Core.Name "t0"))),
Core.functionTypeCodomain = (Core.TypeLiteral Core.LiteralTypeBoolean)}))})),
Core.typeSchemeConstraints = (Just (M.fromList [
(Core.Name "t0", Core.TypeVariableMetadata {
Core.typeVariableMetadataClasses = (S.fromList [
Core.Name "equality"])})]))}))})),
Testing.testCaseWithMetadataDescription = Nothing,
Testing.testCaseWithMetadataTags = []}]}],
Testing.testGroupCases = []}