Is FPH implemented in GHC?

Wolfgang Jeltsch g9ks157k at acme.softbase.org
Wed Sep 10 14:59:07 EDT 2008


Am Mittwoch, 10. September 2008 16:24 schrieben Sie:
> […]

> Meanwhile, why do you ask?  Making impredicative polymorphism work seems to
> be the Right Thing, but it's something of a "technology push", perhpas a
> solution in search of a problem.  Do you have an application that needs it?

Hello Simon,

yes, I have one.  It’s the Grapefruit FRP library. The background is as 
follows:

If an FRP library provides first-class signals then often the problem arises 
that these are actually signal generators—their behavior might depend on the 
time they are started.  To get rid of this deficiency, my signal types now 
have an additional type argument which denotes the starting time.  This way, 
I’m able to fix the starting time using the type system.  The idea is similar 
to the usage of the “state” type argument of ST.

Now I have a switching combinator which takes a signal of signal 
transformations (a time-varying signal transformation).  The signal 
transformations have to work with different starting times, so I use an 
explicit forall and get a type like SSignal t (forall t'. SignalFun t' a).

To implement all this stuff, I had to do quite a bit of code obfuscation.  
That is, I introduced a lot of trivial functions only to give them an 
explicit impredicative/rank 2 type signature.  Maybe my solution isn’t 
optimal but I didn’t see how to do this simpler.  I hope that FPH will reduce 
the extra effort, I have to spend, dramatically.

If you have further questions, please ask.

Best wishes,
Wolfgang


More information about the Glasgow-haskell-users mailing list