10 # (ok, c, f) = freadc f
14 split :: [Char] [Char] -> [[Char]]
16 split c [] = [reverse c]
17 split c ['\n':rest] = [reverse c:split [] rest]
18 split c [r:rest] = split [r:c] rest
22 = map (map fst o filter (uncurry (==)) o zip)
24 $ filter (not o isEmpty)
30 proc [x:xs] = [[(e, x)\\e<-xs | length [()\\a<-x & b<-e | a<>b] <= 1]:proc xs]