I don't think you need to worry about implementation being abstract, as far as the spec is clear and easy to remember. In some cases, showing a simple implementation conveys the idea clearly and precisely; in some other cases, a simple and clear spec needs a convoluted implementation just to cover pitfalls. The latter case doesn't need to be taken as a bad sign, imho.Specializing to common cases is a valid argument. I prefer the consistency to the asymmetry, but opinions may differ. I just think ease of implementation shouldn't be a reason of reducing generality (except the case that there's no known way to implement the given spec efficiently.)
syntax-rules
is given in the Implementation