OSDN Git Service

dip
authorsforman <sforman@hushmail.com>
Sat, 29 Jul 2023 17:28:31 +0000 (10:28 -0700)
committersforman <sforman@hushmail.com>
Sat, 29 Jul 2023 17:28:31 +0000 (10:28 -0700)
implementations/Elm/src/Joy.elm

index e355054..485e3d2 100644 (file)
@@ -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 =