]> git.rkrishnan.org Git - yorgey.git/commitdiff
bug fix. Convert into lines
authorRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 25 Dec 2014 11:16:35 +0000 (16:46 +0530)
committerRamakrishnan Muthukrishnan <ram@rkrishnan.org>
Thu, 25 Dec 2014 11:16:35 +0000 (16:46 +0530)
hw7/JoinList.hs

index e5633d54bf9f4333cb7b7e2e15e88417e87e43b0..84c3a41b268295200a7e22e24c1d7d70e79b5b60 100644 (file)
@@ -15,6 +15,11 @@ data JoinList m a = Empty
                   | Append m (JoinList m a) (JoinList m a)
                     deriving (Eq, Show)
 
+jlToList :: JoinList m a -> [a]
+jlToList Empty = []
+jlToList (Single m a) = [a]
+jlToList (Append m lt rt) = jlToList lt ++ jlToList rt
+
 -- exercise 1
 tag :: Monoid m => JoinList m a -> m
 tag (Empty) = mempty
@@ -83,11 +88,10 @@ scoreLine l = let scores = map scoreString . words $ l
 
 
 instance Buffer (JoinList (Score, Size) String) where
-  toString (Empty) = ""
-  toString (Single _ s) = s
-  toString (Append _ l r) = toString l ++ toString r
+  toString = unlines . jlToList
 
-  fromString s = Single (scoreString s, (Size  (length s))) s
+  fromString s = let ls = lines s in
+                  foldr (+++) Empty $ map (\x -> Single (scoreString x, Size 1) x) ls
   line n b = indexJ n b
   replaceLine n l b = let pre = takeJ (n - 1) b
                           post = dropJ n b