Hi Michael!

Thanks (again) for your answer.
I'm not quite confident using TH yet, but it seems in your code you must
define an 'app' function, and then use [overloadedApp|... |] as a
quasiquoteator to inject the overloaded app, right?

Thanks for the zeroth reference too, one question remains for me: what are
the constrasts/differences between TH and RewriteRules? :-)


2012/4/19 Michael Sloan <mgsl...@gmail.com>

> You're in luck!  This is something I've wanted to implement before in
> the past, and your email reminded me.  While pretty awful, it could be
> used for doing some interesting value-interception instrumentation in
> Haskell.  Recently I've been messing with TH a lot, so this initial
> implementation was rather straightforward.
>
>
> https://github.com/mgsloan/overload-app/blob/master/src/Language/Haskell/TH/OverloadApp.hs
>
> Usage:
> https://github.com/mgsloan/overload-app/blob/master/examples/Example1.hs
>
> Note: Relatively untested implementation, let me know if you find any
> problems!
>
> It only does this transformation to direct function application,
> unfortunately.  In order to properly overload apply for infix
> operators, you'll need to be able to resolve fixities at compile time.
>  This could be done by using the code in
> http://hackage.haskell.org/trac/haskell-prime/wiki/FixityResolution
> and using the fixity information yielded by TH's "reify".  Someone
> aught to have done this before, but I haven't seen it.
>
> Handling the applications involved in do-notation, comprehensions,
> enumerations, and anything else that's such direct syntax sugar would
> also be a bit of work (but could be very useful for other TH
> quasiquoting stuff!).
>
> You might also be interested in this:
>
> http://hackage.haskell.org/package/zeroth-2009.6.23.3
>
> Hope that helps!
>
> -Michael Sloan
>
> On Wed, Apr 18, 2012 at 9:49 AM, Ismael Figueroa Palet
> <ifiguer...@gmail.com> wrote:
> > I'm working on getting annotated versions of all instances of a function
> of
> > a typeclass, and was wondering what are the relation/differences between
> > Template Haskell and the Rewrite Rules section. Of course this is
> specific
> > to GHC.
> >
> > Another question, in Racket, primitive function application is denoted
> > #%app. And using macros I can re-export #%app to be a different function
> f,
> > so a program:
> >
> > (g a) is rewritten into (f g a)
> >
> > is there a way to do the same thing using TH or Rewrite Rules?
> >
> > Thanks
> >
> > --
> > Ismael
> >
> >
> > _______________________________________________
> > Haskell-Cafe mailing list
> > Haskell-Cafe@haskell.org
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>



-- 
Ismael
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to