From b1a9ae3f1c5cdf961f19e60fc352eb5dfea480b4 Mon Sep 17 00:00:00 2001 From: Jim Date: Tue, 24 Mar 2015 17:30:52 -0400 Subject: [PATCH] update untyped_eval to 1.6 --- code/untyped_evaluator.ml | 2 +- code/untyped_evaluator_complete.ml | 2 +- code/untyped_full-1.6.tgz | Bin 0 -> 21192 bytes topics/week7_untyped_evaluator.mdwn | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) create mode 100644 code/untyped_full-1.6.tgz diff --git a/code/untyped_evaluator.ml b/code/untyped_evaluator.ml index a60b2a1d..89776bbd 100644 --- a/code/untyped_evaluator.ml +++ b/code/untyped_evaluator.ml @@ -1,5 +1,5 @@ (* - This is a simplified version of the code at http://lambda.jimpryor.net/code/untyped_full-1.5.tgz + This is a simplified version of the code at http://lambda.jimpryor.net/code/untyped_full-1.6.tgz You can use this code as follows: 1. First, use a text editor to fill in the (* COMPLETE THIS *) portions. diff --git a/code/untyped_evaluator_complete.ml b/code/untyped_evaluator_complete.ml index f61f7008..138f51c8 100644 --- a/code/untyped_evaluator_complete.ml +++ b/code/untyped_evaluator_complete.ml @@ -1,5 +1,5 @@ (* - This is a simplified version of the code at http://lambda.jimpryor.net/code/untyped_full-1.5.tgz + This is a simplified version of the code at http://lambda.jimpryor.net/code/untyped_full-1.6.tgz You can use this code as follows: 1. First, use a text editor to fill in the (* COMPLETE THIS *) portions. diff --git a/code/untyped_full-1.6.tgz b/code/untyped_full-1.6.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c1f3ba3db5a455d4e390172df23e7105befd83e2 GIT binary patch literal 21192 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 r=k{~^x&7RJZa=r5+t2Oi_H+BW{oH