Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion src/main/java/com/garciat/typeclasses/TypeClasses.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import java.util.Arrays;
import java.util.List;

public class TypeClasses {
public final class TypeClasses {
private TypeClasses() {}

public static <T> T witness(Ty<T> ty, Ctx<?>... context) {
return switch (WitnessSummoning.summon(ParsedType.parse(ty.type()), parseContext(context))) {
case Either.Left<SummonError, Object>(SummonError error) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,9 @@
import java.util.Arrays;
import java.util.List;

public class ConstructorLookup {
public final class ConstructorLookup {
private ConstructorLookup() {}

public static List<InstanceConstructor> findRules(ParsedType target) {
return switch (target) {
case ParsedType.App(var fun, var arg) -> Lists.concat(findRules(fun), findRules(arg));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import com.garciat.typeclasses.impl.WitnessRule.InstanceConstructor;
import java.util.List;

public class OverlappingInstances {
public final class OverlappingInstances {
private OverlappingInstances() {}

/**
* @implSpec <a href=
* "https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/instances.html#overlapping-instances">6.8.8.5.
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/com/garciat/typeclasses/impl/Unification.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@
import java.util.List;
import java.util.Map;

public class Unification {
public final class Unification {
private Unification() {}

public static Maybe<Map<ParsedType.Var, ParsedType>> unify(ParsedType t1, ParsedType t2) {
return switch (Pair.of(t1, t2)) {
case Pair<ParsedType, ParsedType>(ParsedType.Var var1, ParsedType.Primitive p) ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,9 @@
import java.util.Map;
import java.util.stream.Collectors;

public class WitnessInstantiation {
public final class WitnessInstantiation {
private WitnessInstantiation() {}

/** Compiles an InstantiationPlan into an Expr. */
public static Expr<ParsedType> compile(InstantiationPlan plan) {
return switch (plan) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class WitnessResolution {
public final class WitnessResolution {
private WitnessResolution() {}

/** Resolves a ParsedType into an InstantiationPlan. */
public static Either<ResolutionError, InstantiationPlan> resolve(
ParsedType target, List<ContextInstance> context) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import com.garciat.typeclasses.types.Either;
import java.util.List;

public class WitnessSummoning {
public final class WitnessSummoning {
private WitnessSummoning() {}

public static Either<SummonError, Object> summon(
ParsedType target, List<ContextInstance> context) {
return WitnessResolution.resolve(target, context)
Expand Down