diff options
| author | Michael Williamson <mike@zwobble.org> | 2023-11-03 18:30:51 +0000 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2023-11-03 18:30:51 +0000 |
| commit | edb9d960f411d28e693237c46a2aadf72fdcc6e2 (patch) | |
| tree | 1d73ec5dda90a0f66df139a303a485f73228ac8d /src/main/java | |
| parent | 72779bc8003f07742a94f34853f2be94004a61ee (diff) | |
Add user defined effects to type system
Diffstat (limited to 'src/main/java')
3 files changed, 18 insertions, 1 deletions
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<EffectFunction> functions +) implements Effect { + @Override + public String describe() { + return name; + } +} |
