diff options
| author | Cédric <cedric.pineau@taelys.com> | 2024-10-13 16:00:03 +0200 |
|---|---|---|
| committer | Cédric <cedric.pineau@taelys.com> | 2024-10-16 21:42:15 +0200 |
| commit | 63c0c643bb8f60d7cf481b89c3102678c808d2a1 (patch) | |
| tree | 6d26dd2fef5b030578b0d2836b40696448ddd813 /java/LCEvaluator.java | |
| parent | d41911f506abf3c6338c511147adacc64583eeb1 (diff) | |
| download | lambda-nantes-63c0c643bb8f60d7cf481b89c3102678c808d2a1.tar.gz | |
Delete duplicated files in java implementation
Diffstat (limited to 'java/LCEvaluator.java')
| -rw-r--r-- | java/LCEvaluator.java | 59 |
1 files changed, 0 insertions, 59 deletions
diff --git a/java/LCEvaluator.java b/java/LCEvaluator.java deleted file mode 100644 index b0fe69b..0000000 --- a/java/LCEvaluator.java +++ /dev/null @@ -1,59 +0,0 @@ -package org.lambdanantes.lcgoji; - -import org.lambdanantes.lcgoji.ast.Abs; -import org.lambdanantes.lcgoji.ast.App; -import org.lambdanantes.lcgoji.ast.Term; -import org.lambdanantes.lcgoji.ast.Var; - -import static org.lambdanantes.lcgoji.ast.Abs.λ; -import static org.lambdanantes.lcgoji.ast.App.apply; - -public class LCEvaluator { - - public static Term evaluate(Term term) { - switch (term) { - case Var var -> { - return var; - } - case Abs abs -> { - return abs; - } - case App app -> { - switch (app.left) { - case Abs abs -> { - return substitute(abs.body, abs.arg, app.right); - } - case App _app -> { - return app; - } - case Var _var -> { - return app; - } - } - } - } - } - - private static Term substitute(Term body, String arg, Term val) { - switch (body) { - case Var var -> { - if (var.name.equals(arg)) { - return val; - } else { - return body; - } - } - case App app -> { - return apply(substitute(app.left, arg, val), substitute(app.right, arg, val)); - } - case Abs abs -> { - if (abs.arg.equals(arg)) { - // Pas de substitution des variables redéfinies - return abs; - } else { - return λ(abs.arg, substitute(abs.body, arg, val)); - } - } - } - } -}
\ No newline at end of file |
