-2
我有我的Haskell代碼的信息:哈斯克爾:剛性類型變量的錯誤
data Symtable a = General a | Stack a
class Evaluable e where
eval :: (Num a, Ord a) => (Ident -> Maybe a) -> (e a) -> (Either String a)
typeCheck :: (Ident -> String) -> (e a) -> Bool
instance (Num a, Ord a) => Evaluable (NExpr a) where
eval _ (Const n) = Right n
typeCheck f f2 = True --to make the code compilable
因爲它說,它給了我在Eval定義的錯誤:無法NExpr匹配型「E」」 'E' 是......的eval :: ...預計EA實際Nexpr一個
的ident =字符串和Nexpr約束剛性類型變量:
data NExpr n = Const n |
Var Ident |
Plus (NExpr n) (NExpr n) |
Minus (NExpr n) (NExpr n) |
Times (NExpr n) (NExpr n)
如何解決呢?
將實例更改爲'instance(Num a,Ord a)=>可評估的NExpr,其中...... – Alec
然後它說: 期待Nexpr的第一個參數應該有kind * * kind * - > * @Alec –