summaryrefslogtreecommitdiff
path: root/java/Abs.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/Abs.java')
-rw-r--r--java/Abs.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/java/Abs.java b/java/Abs.java
new file mode 100644
index 0000000..9d1c146
--- /dev/null
+++ b/java/Abs.java
@@ -0,0 +1,26 @@
+package org.lambdanantes.lcgoji.ast;
+
+import lombok.AccessLevel;
+import lombok.AllArgsConstructor;
+import lombok.EqualsAndHashCode;
+
+import static org.lambdanantes.lcgoji.ast.Var.var;
+
+@AllArgsConstructor(access = AccessLevel.PROTECTED)
+@EqualsAndHashCode
+public final class Abs implements Term {
+
+ public static final Abs IDENTITY = λ("x", var("x"));
+
+ public String arg;
+ public Term body;
+
+ public static Abs λ(String arg, Term body) {
+ return new Abs(arg, body);
+ }
+
+ @Override
+ public String toString() {
+ return "λ" + arg + "." + body;
+ }
+} \ No newline at end of file