In other words, I'd like to create the equivalent of isNumber by saying "isType Number". Is this possible somehow? I'm struggling to find anything similar in Google, maybe because I don't know what to call the situation.

You should probably say "constructor" instead of "type" since, as it's written, this question doesn't even really make sense in the context of Haskell. You're representing Lisp types with Haskell constructors, but that isn't directly relevant to the Haskell question it results in.
–
ehirdJan 21 '12 at 23:30

Data.Typeable may be worth a look, but it doesn't appear that you need dynamic checks here.
–
ExternalRealityJan 21 '12 at 23:50

Some variation on one of these approaches is probably your best option. There are other ways, based on more advanced features of Haskell, but they're probably not worth the hassle unless the interpreted language's types tie much more closely to Haskell's types.

Thank you for the excellent reply! I think the second option will be the easiest for now. It still needs a bit more explicit pattern matching than I was hoping for, but it'll save me a few lines at least.
–
Daniel EliassonJan 22 '12 at 13:23