From edb9d960f411d28e693237c46a2aadf72fdcc6e2 Mon Sep 17 00:00:00 2001 From: Michael Williamson Date: Fri, 3 Nov 2023 18:30:51 +0000 Subject: Add user defined effects to type system --- src/main/java/org/shedlang/compiler/types/Effect.java | 2 +- .../java/org/shedlang/compiler/types/EffectFunction.java | 4 ++++ .../java/org/shedlang/compiler/types/UserDefinedEffect.java | 13 +++++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 src/main/java/org/shedlang/compiler/types/EffectFunction.java create mode 100644 src/main/java/org/shedlang/compiler/types/UserDefinedEffect.java (limited to 'src/main/java') diff --git a/src/main/java/org/shedlang/compiler/types/Effect.java b/src/main/java/org/shedlang/compiler/types/Effect.java index 7e8bc203..2a583320 100644 --- a/src/main/java/org/shedlang/compiler/types/Effect.java +++ b/src/main/java/org/shedlang/compiler/types/Effect.java @@ -1,4 +1,4 @@ package org.shedlang.compiler.types; -public sealed interface Effect extends TypeLevelValue permits IoEffect, NoneEffect { +public sealed interface Effect extends TypeLevelValue permits IoEffect, NoneEffect, UserDefinedEffect { } diff --git a/src/main/java/org/shedlang/compiler/types/EffectFunction.java b/src/main/java/org/shedlang/compiler/types/EffectFunction.java new file mode 100644 index 00000000..c6e4db3f --- /dev/null +++ b/src/main/java/org/shedlang/compiler/types/EffectFunction.java @@ -0,0 +1,4 @@ +package org.shedlang.compiler.types; + +public record EffectFunction(String name, FunctionType type) { +} diff --git a/src/main/java/org/shedlang/compiler/types/UserDefinedEffect.java b/src/main/java/org/shedlang/compiler/types/UserDefinedEffect.java new file mode 100644 index 00000000..d88ac200 --- /dev/null +++ b/src/main/java/org/shedlang/compiler/types/UserDefinedEffect.java @@ -0,0 +1,13 @@ +package org.shedlang.compiler.types; + +import java.util.List; + +public record UserDefinedEffect( + String name, + List functions +) implements Effect { + @Override + public String describe() { + return name; + } +} -- cgit v1.2.3