summaryrefslogtreecommitdiff
path: root/java/Abs.java
blob: 9d1c146b83f4125d66da1e382ff187f7bb7f12f9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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;
    }
}