In CLOS, a slot can have a :type option, but it doesn’t inforce type checking. It is good practice to use it, for documentation and for compiler optimizations and warnings sometimes (with CCL and SBCL when safety is high), but one shouldn’t rely on it. To comply this need, we can simply create our own constructor functions.However, the sanity-clause library can do it since a couple of days. The validation error messages are pretty good.