# HG changeset patch # User Yasutaka Higa # Date 1415500747 -32400 # Node ID 6e270dfe2bb90f3dd42eca2cd98e5b885772beff # Parent 90b171e3a73e65325e9c1e92742ef09c2985585c Define pretty-print for Delta diff -r 90b171e3a73e -r 6e270dfe2bb9 delta.hs --- a/delta.hs Sat Nov 01 15:19:04 2014 +0900 +++ b/delta.hs Sun Nov 09 11:39:07 2014 +0900 @@ -1,7 +1,15 @@ import Control.Applicative import Data.Numbers.Primes -- $ cabal install primes -data Delta a = Delta [String] a [String] a deriving (Show) +data Delta a = Delta [String] a [String] a + +instance (Show a) => Show (Delta a) where + show (Delta lx x ly y) = values ++ logs + where + values = "Delta {" ++ (show x) ++ "|" ++ (show y) ++ "}\n" + logs = concat . reverse $ zipWith (formatter x y) lx ly + formatter x y = (\x y -> " {" ++ x ++ (separator x y) ++ y ++ "}\n") + separator x y = if (max (length x) (length y)) > 50 then "|\n " else "|" value :: (Delta a) -> a value (Delta _ x _ _) = x