data List T | cons (head: T) (tail: (List T)) | nil