I\'m reading Learn You a Haskell and I\'m wondering why so many things are acting like a list, and nothing in the Prelude is using the native facility of type classes to set
There isn't a lot of value to having a type class for list-like data in Haskell. Why? Because of laziness. You can just write a function that converts your data to a list, and then use that list. The list will only get constructed as its sublists and elements are demanded, and their memory will be eligible for collection as soon as no references remain to the prefixes.
There is value for a type class that provides a generic toList function—however, that already exists in Data.Foldable.
So basically, the solution is to implement Data.Foldable and use its toList function.