I see your point in the rest of the paragraph. The reason I was suggesting it was that I spent more than a year or two never fully understanding difference list and am only now starting to feel confident that I am understanding them. When learning it would have been helpful to see the test cases for the difference list and have the has_type/2 for difference_list as a safety net.
But if the has_type/2 for difference list is in the production code then others might think that is the way to go when it is not as you note.
After this little exercise I realize how much I need to fix the Wiki on difference list.
Thanks.