投稿してしばらく経ってから、これは、
turnRight :: Direction -> Direction turnRight d = toEnum (((fromEnum d) + 1) `mod` 4) turnLeft :: Direction -> Direction turnLeft d = toEnum (((fromEnum d) + 3) `mod` 4)
こう書けることに気がついた。
turnRight :: Direction -> Direction turnRight = toEnum.(`mod` 4).(+ 1).fromEnum turnLeft :: Direction -> Direction turnLeft = toEnum.(`mod` 4).(+ 3).fromEnum
わかりやすい。この辺りの変換がパッと気がつかないところが、まだ練習が不足しているということなんだろうな。