diff --git a/implementations/Elm/src/Joy.elm b/implementations/Elm/src/Joy.elm index e355054..485e3d2 100644 --- a/implementations/Elm/src/Joy.elm +++ b/implementations/Elm/src/Joy.elm @@ -35,6 +35,7 @@ joy_eval : String -> JList -> JList -> Result String (JList, JList) joy_eval symbol stack expression = case symbol of "i" -> joy_i stack expression + "dip" -> joy_dip stack expression "+" -> joy_binary_math_op (+) stack expression "-" -> joy_binary_math_op (-) stack expression "*" -> joy_binary_math_op (*) stack expression @@ -63,6 +64,15 @@ joy_i stack expression = Ok (a, s0) -> Ok (s0, a ++ expression) Err msg -> Err msg +joy_dip : JList -> JList -> Result String (JList, JList) +joy_dip stack expression = + case pop_list(stack) of + Ok (quoted_expression, s0) -> + case pop_any(s0) of + Ok (x, s1) -> Ok (s1, quoted_expression ++ (x :: expression)) + Err msg -> Err msg + Err msg -> Err msg + joy_binary_math_op : (Int -> Int -> Int) -> JList -> JList -> Result String (JList, JList) joy_binary_math_op op stack expression =