diff options
-rw-r--r-- | rip-lang.txt | 1 | ||||
-rw-r--r-- | rip.hs | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/rip-lang.txt b/rip-lang.txt index 75ed5bf..f5f2146 100644 --- a/rip-lang.txt +++ b/rip-lang.txt @@ -11,6 +11,7 @@ i: increment d: decrement r: pops the number of items to rotate clockwise R: pops the number of items to rotate anti-clockwise +l: push length of stack (before this push) a s m q: + - * / (add, subtract, multiply, quotient (integer)) G L E: greater, less, equal; booleans are 1 and 0, as you expect n: not; equivalent to 0E @@ -150,6 +150,9 @@ rip' code@(x:xs) fns st = do (begin, rest) = (take n newst, drop n newst) res = last begin : init begin ++ rest --SLOW! + 'l' -> + rip' xs fns (fromIntegral (length st) : st) + 'a' -> rip' xs fns (a + b : cs) where (b:a:cs) = st |