This commit is contained in:
sforman 2023-07-29 10:23:06 -07:00
parent 99a5fd93b1
commit 9c381f0e8f
1 changed files with 8 additions and 0 deletions

View File

@ -34,6 +34,7 @@ joy stack expression =
joy_eval : String -> JList -> JList -> Result String (JList, JList) joy_eval : String -> JList -> JList -> Result String (JList, JList)
joy_eval symbol stack expression = joy_eval symbol stack expression =
case symbol of case symbol of
"i" -> joy_i stack expression
"+" -> joy_binary_math_op (+) stack expression "+" -> joy_binary_math_op (+) stack expression
"-" -> joy_binary_math_op (-) stack expression "-" -> joy_binary_math_op (-) stack expression
"*" -> joy_binary_math_op (*) stack expression "*" -> joy_binary_math_op (*) stack expression
@ -56,6 +57,13 @@ joy_eval symbol stack expression =
_ -> Err ("Unknown word: " ++ symbol) _ -> Err ("Unknown word: " ++ symbol)
joy_i : JList -> JList -> Result String (JList, JList)
joy_i stack expression =
case pop_list(stack) of
Ok (a, s0) -> Ok (s0, a ++ expression)
Err msg -> Err msg
joy_binary_math_op : (Int -> Int -> Int) -> JList -> JList -> Result String (JList, JList) joy_binary_math_op : (Int -> Int -> Int) -> JList -> JList -> Result String (JList, JList)
joy_binary_math_op op stack expression = joy_binary_math_op op stack expression =
case pop_int(stack) of case pop_int(stack) of