I can see what's going on:  it can't tell that the "a" I am writing there is the same "a" that's in the type specification, but is there any way that I can make it identify "a" with the "a" in the specification for nextPtr?

Lexically scoped type variables: http://www.haskell.org/ghc/docs/latest/html/users_guide/other-type-extensions.html#scoped-type-variables

Regards,
Sean