если скобки читать как список, то этот список должен быть гетерогенным. например, data MyList a = Elem a | List [MyList a], как вы предлагали, будет типом решения
тут явно скопипастили задачи по лиспу и решили, что их можно дать и на хаскель ладно, обожаю наш универ почитаю доку и примеры и разберусь как-нибудь, сам haskell мне нравится, очень интересный язык. Но для себя пока не нашел, как его можно применить на практике (я работаю в webdev.)