X-Git-Url: http://lambda.jimpryor.net/git/gitweb.cgi?p=lambda.git;a=blobdiff_plain;f=code%2Funtyped_evaluator_complete.ml;h=f918d3a4c64a83d1ee0ac81b1344f9acf4aeaed3;hp=51efce9182a1a1fc3d14068e3306f457c0ab184a;hb=8cd2e41084d42df6db49d6ea9e3183c709a54837;hpb=dcd3ac696be98e1738d46ad6dcae4584ea76768b diff --git a/code/untyped_evaluator_complete.ml b/code/untyped_evaluator_complete.ml index 51efce91..f918d3a4 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 ... + This is a simplified version of the code at http://lambda.jimpryor.net/code/untyped_full-1.7.tgz You can use this code as follows: 1. First, use a text editor to fill in the (* COMPLETE THIS *) portions. @@ -15,7 +15,7 @@ `reduce (App(Lambda("x",Var "x"),Lambda("y",Var "y")))` `evaluate (App(Lambda("x",Var "x"),Lambda("y",Var "y")))` - The two interpreters presented below are (VersionA) a substitute-and-replace + The two interpreters presented below are (VersionA) a substitute-and-repeat interpreter, and (VersionB) an environment-based interpreter. We discuss the differences between these in the course notes. @@ -61,7 +61,7 @@ and env = (identifier * term) list (* Operations for environments *) let empty = [] let shift (ident : identifier) binding env = (ident,binding) :: env -let rec lookup (sought_ident : ident) (env : env) : term option = +let rec lookup (sought_ident : identifier) (env : env) : term option = match env with | [] -> None | (ident, binding) :: _ when ident = sought_ident -> Some binding