Я работаю над функцией, которая может подсчитать количество операторов, используемых в выражении. Мой код выглядит следующим образом:
data Expr = Lit Int |
Expr :+: Expr |
Expr :-: Expr
size :: Expr -> Int
size (Lit n) = 0
size (e1 :+: e2) = 1 + (size e1) + (size e2)
size (e1 :-: e2) = 1 + (size e1) + (size e2)
Но когда я пытаюсь выполнить этот код, используя Hugs98, я получаю следующую ошибку:
Main> size 2+3
ERROR - Cannot infer instance
*** Instance : Num Expr
*** Expression : size 2 + 3
Может кто-нибудь сказать мне, что я делаю не так? Я действительно не в себе.