I think that haskell is fine when your data structures are simple, for example tuples of length < 10. When you need more general structures, like lists of lists of element of any type, then Lisp is a better fit. For example, I don't know any computer algebra system (cas) designed in Haskell, but have the free CAS Maxima programmed in Lisp.
You could use XML data structures in which some of the elements are programs that you can execute (program is data), other are graphic, other are links to more XML data and so on. And your program is able to process that information.