片方のファイルにしか含まれない行の抽出

30分プログラム、その443。AとBというファイルを与えたときに、Aにだけ含まれる行を抽出するプログラム。
TODO一覧と、完了したタスク一覧を渡して、未完了のタスク一覧を出力したかった。要するに集合的な意味での差なんだから、ファイルのdiffといったらこっちを指すべきじゃね、とちょっと思ったりしてる。

使い方

$ cat a
foo
bar
baz

$ cat b
bar

$ ya-diff a b
foo
baz

ソースコード

import System.Environment
import Data.List

main = do [x,y] <- getArgs >>= mapM readFile
          putStr $ unlines $ (lines x) \\ (lines y)