Я изучаю haskell и имею некоторые проблемы с пониманием того, что ошибки пытаются сказать мне. Этот код выдает следующую ошибкуУстранение неполадок функции haskell
data Term = Mul { factor :: Term, factor2 :: Term }
| Div { dividend :: Term, divisor :: Term }
| Add { summand :: Term, summand2 :: Term }
| Sub { minuend :: Term, subtrahend :: Term }
| Mon { exponent :: Int }
value :: (Double, Term) -> Double
value x (Mul a b) = (value x a) * (value x b)
value x (Div a b) = (value x a)/(value x b)
value x (Add a b) = (value x a) + (value x b)
value x (Sub a b) = (value x a) - (value x b)
value x (Mon a) = x^a
Ошибка:
Couldn't match expected type `Term -> (Double, Term)'
with actual type `Double'
The function `value' is applied to two arguments,
but its type `(Double, Term) -> Double' has only one
In the first argument of `(+)', namely `(value x a)'
In the expression: (value x a) + (value x b)
Что я делаю неправильно?