diff options
| author | aarne <aarne@cs.chalmers.se> | 2008-01-02 16:54:22 +0000 |
|---|---|---|
| committer | aarne <aarne@cs.chalmers.se> | 2008-01-02 16:54:22 +0000 |
| commit | cbfb9d5e7d76616b5490083a9f4071fd977c2ec0 (patch) | |
| tree | bdbd570e6615b2fe2aa0c6033472750d0f5b75fc /examples/uusisuomi/MyDiff.hs | |
| parent | b3da2791fdea27bd5061ad939e31915e36c03f1d (diff) | |
experiment with Finnish morphology
Diffstat (limited to 'examples/uusisuomi/MyDiff.hs')
| -rw-r--r-- | examples/uusisuomi/MyDiff.hs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/uusisuomi/MyDiff.hs b/examples/uusisuomi/MyDiff.hs new file mode 100644 index 000000000..f695978aa --- /dev/null +++ b/examples/uusisuomi/MyDiff.hs @@ -0,0 +1,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) + |
