4
У меня есть следующий фрагмент кода Haskell:Полиморфные переменная используется в различных контекстах Haskell
foo :: Num a => (a -> a) -> Either Integer Double -> Either Integer Double
foo f x = case x of
Left i -> Left $ f i
Right d -> Right $ f d
Это не компилируется с ошибкой «Не удалось соответствовать типа Integer с двойной». Я понимаю, что тип f
вычисляется как Integer -> Integer
и Double -> Double
в выражениях Left
и Right
соответственно, создавая столкновение.
Как я могу изменить эту функцию, так что будет использоваться правильная версия f
?
Изумительный! Это полностью решает мою проблему. – Xilexio