waldmann:
> With Data.Generics, we can get an object's type, constructor and fields.
> I think there should be way to get the object's class(es) and methods.
> E. g. I want to find out whether the object's type implements Show,
> and if so, call the show  method (and if not, call some replacement).
> See http://www.haskell.org//pipermail/haskell/2005-November/016992.html
> see also http://java.sun.com/docs/books/tutorial/reflect/

Depending on how evil you are, you can already do this. Call the show,
and if it doesn't exist you can catch the exception that is thrown (a 
NoMethodError). Lambdabot actually does this when doing some fun dynamic
composition of plugins.

Here's a sample:

        catchError
                (process m a b cmd str)
                (\ex -> case (ex :: IRCError) of
                            (IRCRaised (NoMethodError _)) -> process_ m cmd str
                            _ -> throwError ex))

Cheers, Don
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to