  The error message "expected `vars`, got ident `a`" suggests that the parser is expecting a `vars` keyword, but it found an identifier `a` instead.

The `vars` keyword is used to declare a list of variables in a `data` declaration. For example:
```
data MyData = MyData {
  a :: Int,
  b :: String
}
```
In this example, `a` and `b` are declared as variables in the `MyData` data type.

It's possible that the parser is confused by the `a` identifier in the `data` declaration, and is expecting a `vars` keyword instead.

To fix this error, you can try adding a `vars` keyword before the `a` identifier, like this:
```
data MyData = MyData {
  vars a :: Int,
  b :: String
}
```
This should tell the parser that `a` is a variable in the `MyData` data type, and it should be able to parse the rest of the code correctly.