У меня есть эти данные на моем 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 f f2 = Left ("Undefined variable: ") --to make the code compilable
typeCheck f f2 = True --to make the code compilable
Дело в том, Eval функция возвращает оценку числового выражения (например, 3 + 5, или х + 3), поэтому Я должен проверить значение X в данных symtable, но я не получил ссылку на эту функцию (я не могу редактировать заголовок функции). Как мне это сделать?
идент = строка и Nexpr:
data NExpr n = Const n |
Var Ident |
Plus (NExpr n) (NExpr n) |
Minus (NExpr n) (NExpr n) |
Times (NExpr n) (NExpr n)
Предположительно, первый аргумент 'eval' это функция, которая делает поиск имен для всех имен, найденных во втором аргументе? – chepner
возможно, но я немного потерялся с haskell, я не знаю, что с ним делать или как передать его или как его оценить с помощью, может быть, –
Это зависит от того, что такое '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' как. – chepner