Yes, because in most cases printing should either hit a symbol as a base case (e.g., `String`) or a compound s-expression (e.g., `(Listof ...)`). So we want either `write` or `display` and not `print`. Of those two, we want `display` because of two hacks I used: singleton types print to a string that is their written form and keyword arguments in function types print to strings to preserve square brackets. Those strings should appear unquoted in the printed type.