From 5db538cc5c6b907ee924d84a3de4af4397ebbbd3 Mon Sep 17 00:00:00 2001 From: Simon Forman Date: Sat, 24 Sep 2022 12:54:46 -0700 Subject: [PATCH] Eval symbols... --- implementations/Ocaml/helloworld/bin/main.ml | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/implementations/Ocaml/helloworld/bin/main.ml b/implementations/Ocaml/helloworld/bin/main.ml index 251ecc4..a4a4e9a 100644 --- a/implementations/Ocaml/helloworld/bin/main.ml +++ b/implementations/Ocaml/helloworld/bin/main.ml @@ -168,13 +168,19 @@ let text_to_expression text = parse (tokenize text) let joy stack expression dictionary = (stack @ expression, dictionary) *) -let joy : joy_list -> joy_list -> joy_dict -> joy_list * joy_dict = fun stack expression dictionary -> +let joy_eval _ s e d = (s, e, d) + +let rec joy : joy_list -> joy_list -> joy_dict -> joy_list * joy_dict = fun stack expression dictionary -> match expression with | [] -> (stack, dictionary) - | _ -> (*head :: tail ->*) - (stack @ expression, dictionary) + | head :: tail -> + match head with + | JoySymbol sym -> + let (s, e, d) = joy_eval sym stack tail dictionary in + joy s e d + | _ -> joy (head :: stack) tail dictionary -let expr = text_to_expression "1 2 3[4 5 6[7 8]9 10]11[][][[]]" +let expr = text_to_expression "1 2 + 3[4 5 6[7 8]9 10]11[][][[]]" let s = text_to_expression "23 [18 99] " let stack, _ = joy s expr d