From 6e05f595786839770fe9cdaa477dd3162f540585 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Sun, 4 Oct 2015 11:25:52 +0200 Subject: Add l (length) instruction --- rip-lang.txt | 1 + rip.hs | 3 +++ 2 files changed, 4 insertions(+) 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 diff --git a/rip.hs b/rip.hs index ca8675f..14e7f6f 100644 --- a/rip.hs +++ b/rip.hs @@ -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 -- cgit v1.2.3-54-g00ecf