LL Golf Hole 4

問題は以下の通り。

GNU GENERAL PUBLIC LICENSE Version 3に登場する単語について、単語が登場する行を示した索引を作成してください。

与えられる文章についてはリテラルで表記する、標準入力で与えられる、引数でファイル名が与えられるなどは自由とします。

余力のあるものはこのプログラムを短くしてみたり、短くしてみたり、短くしてください。

とりあえず短めに書いたらこうなった。Haskellで6行也。

import List
main = do cs <- readFile "gpl.txt"
          let ws = nub $ words cs
              ls = map words $ lines cs
          mapM_ print $ zip ws $ map (flip indices ls) ws
          where indices w = map (+ 1) . findIndices (elem w)

トータルで何バイトとかあんまり考えてなくて、とりあえず行数が少なくなる方向でやってみた。
letをなくせばもっと短くなるけど、そこそこ読めるコードの範囲で留めた結果がこれ。