From: Ramakrishnan Muthukrishnan <ram@rkrishnan.org>
Date: Thu, 25 Dec 2014 03:07:47 +0000 (+0530)
Subject: hw7: rewrite dropJ
X-Git-Url: https://git.rkrishnan.org/simplejson/components/com_hotproperty/css/somewhere?a=commitdiff_plain;h=4e8d48f0e21062d9aeb7ab96fc6478560a421812;p=yorgey.git

hw7: rewrite dropJ
---

diff --git a/hw7/JoinList.hs b/hw7/JoinList.hs
index 3dca2de..e498eed 100644
--- a/hw7/JoinList.hs
+++ b/hw7/JoinList.hs
@@ -33,3 +33,17 @@ indexJ n (Append t l r) | n >= getSize (size t) = Nothing
                         | n < (getSize (size (tag l))) = indexJ n l
                         | otherwise = indexJ (n - getSize (size (tag l))) r
 
+-- 2. drop
+dropJ :: (Sized b, Monoid b) =>
+         Int -> JoinList b a -> JoinList b a
+dropJ n x | n < 0 = x
+dropJ 0 x = x
+dropJ _ Empty = Empty
+dropJ n v@(Single _ _) | n == 0 = v
+                       | otherwise = Empty
+dropJ n (Append t l r) | n > getSize (size t) = Empty
+                       | n > (getSize (size (tag l))) =
+                           dropJ (n - getSize (size (tag l))) r
+                       | otherwise = let lft = dropJ n l in
+                                     Append ((tag lft) `mappend` (tag r)) lft r
+