原です。

>中村 のりつぐ です。

>http://rwiki.jin.gr.jp/cgi-bin/rw-cgi.rb?cmd=view;name=uniq.hs
>とか非常に簡単そうなのにパットは分からないです。うぅぅ

これですね。

import System

main = do args <- getArgs
          contents <- readFile (head args)
          let ls = lines contents
          mapM_ putStrLn (uniq Nothing ls)

uniq :: Maybe String -> [String] -> [String]
uniq Nothing (l:ls) = l : uniq (Just l) ls
uniq (Just preLine) (l:ls)
 | preLine == l    = uniq (Just l) ls
 | otherwise       = l : uniq (Just l) ls
uniq _ []          = []

Maybe がわかり辛いのかな。Maybe を大きさ1のバッファとして
使っているんですよ。空の状態が Nothing で,x が入っている
と Just x なんですね。うまいなあ。配列を使うと

import System

main = do args <- getArgs
          contents <- readFile (head args)
          let ls = lines contents
          mapM_ putStrLn (uniq [] ls)

uniq :: [String] -> [String] -> [String]
uniq [] (l:ls) = l : uniq [l] ls
uniq [preLine] (l:ls)
 | preLine == l    = uniq [l] ls
 | otherwise       = l : uniq [l] ls
uniq _ []          = []

こんな感じしょうか。大きさが高々1なので,配列は大げさ。

でも,次のやり方の方が分かりやすいかも。

import System

main = do args <- getArgs
          contents <- readFile (head args)
          let ls = lines contents
          mapM_ putStrLn (uniq ls)

uniq :: [String] -> [String]
uniq (l:m:ls)
  |l == m     = uniq (m:ls)
  |otherwise  = l:uniq (m:ls) 
uniq ls       = ls


--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/