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; } }