OSDN Git Service

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

index 91a4340..96625d2 100644 (file)
@@ -51,6 +51,7 @@ joy_eval symbol stack expression =
         "rest" -> joy_rest stack expression
         "stack" -> joy_stack stack expression
         "swaack" -> joy_swaack stack expression
+        "swap" -> joy_swap stack expression
         _ -> Err ("Unknown word: " ++ symbol)
 
 
@@ -132,6 +133,16 @@ joy_swaack stack expression =
         Err msg -> Err msg
 
 
+joy_swap : JList -> JList -> Result String (JList, JList)
+joy_swap stack expression =
+    case pop_any(stack) of
+        Ok (a, s0) ->
+            case pop_any(s0) of
+                Ok (b, s1) -> Ok ((b :: a :: s1), expression)
+                Err msg -> Err msg
+        Err msg -> Err msg
+
+
 push_int : Int -> JList -> JList
 push_int i stack = (JoyInt i) :: stack