I’m having a hard time figuring out why this works:

```
using Zygote
W, b = rand(2, 3), rand(2)
predict(x) = W*x .+ b
g = gradient(() -> sum(predict([1,2,3])), Params([W, b]))
g[W], g[b]
```

but this doesn’t:

```
using Zygote
a = 2
x = 2
f(x) = x^a
gp = gradient(() -> f(x), Params(a))
gp[a]
```

I get the error:

```
ERROR: Only reference types can be differentiated with `Params`.
```

Can anyone help?