Я пытаюсь определить тип данных Vector3 в haskell и разрешить использовать (+) оператор. Я попробовал следующее:
data Vector3 = Vector3 Double Double Double
Vector3 x y z + Vector3 x' y' z' = Vector3 (x+x') (y+y') (z+z')
Но ghci жалуется на неоднозначное появление (+). Я не понимаю, почему возникновение неоднозначно; конечно, средство проверки типов может сделать вывод о том, что x, x ', y и т.д. имеют тип Double и, следовательно, правильный оператор для их использования - Prelude. +?
Я знаю, что я мог бы сделать Vector3 экземпляром класса Num, но это слишком ограничительно для меня; Я не хочу определять умножение вектора на другой вектор.