"rshift" -> joy_binary_math_op (swap_args Bitwise.shiftRightBy) stack expression
">>" -> joy_binary_math_op (swap_args Bitwise.shiftRightBy) stack expression
+ "/\\" -> joy_logical_op (&&) stack expression
+ "\\/" -> joy_logical_op (||) stack expression
+ "_\\/_" -> joy_logical_op (xor) stack expression
+
"clear" -> Ok ([], expression)
"concat" -> joy_concat stack expression
"cons" -> joy_cons stack expression
Err msg -> Err msg
+joy_logical_op : (Bool -> Bool -> Bool) -> JList -> JList -> Result String (JList, JList)
+joy_logical_op op stack expression =
+ case pop_bool(stack) of
+ Ok (a, s0) ->
+ case pop_bool(s0) of
+ Ok (b, s1) ->
+ Ok ((push_bool (op b a) s1), expression)
+ Err msg -> Err msg
+ Err msg -> Err msg
+
+
joy_concat : JList -> JList -> Result String (JList, JList)
joy_concat stack expression =
case pop_list(stack) of