blob: f695978aa995bfebb8266b05ba73d83f680140cb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
module Main where
import System
-- compare lines word-by-word, returning difference pairs with their positions
main = do
x:y:_ <- getArgs
old <- readFile x >>= return . lines
new <- readFile y >>= return . lines
mapM_ comp (zip old new)
comp (ws1,ws2) = do
let diffs = [form ++ ":" ++ w1 ++ "-" ++ w2 |
(form,(w1,w2)) <- zip forms (zip (words ws1) (words ws2)), diff w2 w1]
putStr $ unwords diffs
if null diffs then return () else putStrLn ""
forms = map show [1..]
diff w ws = notElem w (chop ws) where
chop cs = case span (/='/') cs of
([],_) -> []
(w1,ww) -> w1:chop (drop 1 ww)
|