Я только начал изучать Haskell. Я думаю, что у меня есть основы, но я хочу убедиться, что я на самом деле заставляю себя думать также функционально.
data Dir = Right | Left | Front | Back | Up | Down deriving (Show, Eq, Enum)
inv Right = Left
inv Front = Back
inv Up = Down
В любом случае, сущность того, что я пытаюсь сделать, - создать функцию для отображения между каждым "Dir" и его противоположностью /inv. Я знаю, что я мог бы легко продолжить это для еще 3 строк, но я не могу не задаться вопросом, есть ли лучший способ. Я попытался добавить:
inv a = b where inv b = a
но, видимо, вы не можете этого сделать. Поэтому мой вопрос: есть ли способ генерировать остальные инверсии или вообще лучший способ создать эту функцию?
Большое спасибо.