Yes, (:) is the constructor for lists. You need the one for trees. List def. could be something like this: data List a = Empty | (a : List a) Trees usually have Leaves and Nodes (sometimes they are unified to just one Contstructor).