From 127b36c15d0e4a31aa3681b904cac009d77e3885 Mon Sep 17 00:00:00 2001 From: Dov Murik Date: Mon, 28 Mar 2016 15:13:05 -0400 Subject: [PATCH] ocaml: Fix exception on literal empty list Issue #190 --- ocaml/step3_env.ml | 1 + ocaml/step4_if_fn_do.ml | 1 + ocaml/step6_file.ml | 1 + ocaml/step7_quote.ml | 1 + ocaml/step8_macros.ml | 1 + ocaml/step9_try.ml | 1 + ocaml/stepA_mal.ml | 1 + 7 files changed, 7 insertions(+) diff --git a/ocaml/step3_env.ml b/ocaml/step3_env.ml index 73d4236dd9..ef7d131675 100644 --- a/ocaml/step3_env.ml +++ b/ocaml/step3_env.ml @@ -33,6 +33,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match ast with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/step4_if_fn_do.ml b/ocaml/step4_if_fn_do.ml index f08aa55223..0e0cbaf76f 100644 --- a/ocaml/step4_if_fn_do.ml +++ b/ocaml/step4_if_fn_do.ml @@ -21,6 +21,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match ast with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/step6_file.ml b/ocaml/step6_file.ml index e9d48d3ffe..41b3a052c9 100644 --- a/ocaml/step6_file.ml +++ b/ocaml/step6_file.ml @@ -21,6 +21,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match ast with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/step7_quote.ml b/ocaml/step7_quote.ml index 3291f48fba..23eaa740fc 100644 --- a/ocaml/step7_quote.ml +++ b/ocaml/step7_quote.ml @@ -33,6 +33,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match ast with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/step8_macros.ml b/ocaml/step8_macros.ml index 7f61c597ca..93113e5ad5 100644 --- a/ocaml/step8_macros.ml +++ b/ocaml/step8_macros.ml @@ -54,6 +54,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match macroexpand ast env with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/step9_try.ml b/ocaml/step9_try.ml index 2eab66eabb..1885359ffe 100644 --- a/ocaml/step9_try.ml +++ b/ocaml/step9_try.ml @@ -54,6 +54,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match macroexpand ast env with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value diff --git a/ocaml/stepA_mal.ml b/ocaml/stepA_mal.ml index fc43eb69a2..c36e6c87e3 100644 --- a/ocaml/stepA_mal.ml +++ b/ocaml/stepA_mal.ml @@ -54,6 +54,7 @@ let rec eval_ast ast env = | _ -> ast and eval ast env = match macroexpand ast env with + | T.List { T.value = [] } -> ast | T.List { T.value = [(T.Symbol { T.value = "def!" }); key; expr] } -> let value = (eval expr env) in Env.set env key value; value