From eb8b282bc24cd6331b94af72972d135095af7890 Mon Sep 17 00:00:00 2001 From: sforman Date: Sat, 29 Jul 2023 09:17:27 -0700 Subject: [PATCH] cons --- implementations/Elm/src/Joy.elm | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/implementations/Elm/src/Joy.elm b/implementations/Elm/src/Joy.elm index cdb3829..da79796 100644 --- a/implementations/Elm/src/Joy.elm +++ b/implementations/Elm/src/Joy.elm @@ -44,6 +44,7 @@ joy_eval symbol stack expression = "xor" -> joy_binary_math_op (Bitwise.xor) stack expression "clear" -> Ok ([], expression) "concat" -> joy_concat stack expression + "cons" -> joy_cons stack expression _ -> Err ("Unknown word: " ++ symbol) @@ -68,6 +69,17 @@ joy_concat stack expression = Err msg -> Err msg +joy_cons : JList -> JList -> Result String (JList, JList) +joy_cons stack expression = + case pop_list(stack) of + Ok (a, s0) -> + case pop_any(s0) of + Ok (b, s1) -> + Ok ((push_list (b :: a) s1), expression) + Err msg -> Err msg + Err msg -> Err msg + + push_int : Int -> JList -> JList push_int i stack = (JoyInt i) :: stack -- 2.11.0