エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

ポイントフリースタイル

投稿してしばらく経ってから、これは、

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

わかりやすい。この辺りの変換がパッと気がつかないところが、まだ練習が不足しているということなんだろうな。