Я следующий код, предназначенный принять двухтактный из m
и заменить двухтактный, который начинается с s
с оценкой выражения e
Haskell: ошибка синтаксического анализа на входе '|'
exec (Assign s e) m = assign s (eval e m) m
where assign _ _ [] = error ("undef var " ++ s)
assign s v (x:xs)
| fst x == s = if sameKind v (fst x)
then (fst x,v):xs
else error "type error in assign"
| otherwise = x:(assign s v xs)
where sameKind (VInt a) (VInt b) = True
sameKind (VBool a) (VBool b) = True
sameKind _ _ = False
При компиляции, я получаю ошибку: parse error on input '|'
Кто-нибудь знает, как это исправить?
Вы, кажется, отступы. Используйте пробелы, и у него больше шансов на работу. (Если вы хотите использовать вкладки, вам нужно разделить вещи на большее количество строк. Вкладки также плохие для выравнивания.) – Ryan
заменил вкладки пробелами, теперь имеет ошибку синтаксического анализа на входе «назначить» на третьей строке. поэтому я предполагаю, что это будет новый вопрос. –
Все ваши 'назначенные' должны совпадать друг с другом, как и 'sameKind'. – melpomene