Об этом коде из LearnYouaHaskell:
newtype Pair b a = Pair {getPair :: (a,b)}
instance Functor (Pair c) where
fmap f (Pair (x, y)) = Pair (f x, y)
Я понимаю, что первая строка создает новый тип данных из кортежа. Однако почему порядок аргументов изменился с Pair b a
на getPair :: (a,b)
? Если я переключаю один из порядков, то получаю ошибку из-за сопоставления с образцом в определении fmap
.