質問です。
Haskellにて、二次元配列を時計回りに90度回転させるには、どうすればいいでしょうか?

今あるコードが
rot90 list = reverse (map (head) list) : rest
where rest = if length (concat taillist) == 0 then []
else rot90 taillist
where taillist = map tail list
ですが、ものすごく非効率的だと思います。