週をまたいでしまった。解答例もでてるけど。
問題3。これも内包表記で。
boxing :: [[a]] -> [[a]]
boxing m = [[m!!x!!y| x <- [0..l1], y <- [0..l1], x`div`l2 == i, y`div`l2 == j] | i <- [0..l3], j <- [0..l3]]
  where
    l1 = length m - 1
    l2 = (floor . sqrt . fromIntegral . length) m
    l3 = l2 -1
 行列のサイズから n を求めるとこで型が合わずにはまった(sqrt は (Floating a) => a -> a,必要なのは Int)。結局 floor を使った。