[reactive] Newbie Difficulty ..

Tom Poliquin poliquin at softcomp.com
Mon Sep 21 16:35:12 EDT 2009


Tom Poliquin wrote:
> > . . . .
> > This exhibits the same untoward hanging behavior
> > on a blocking read inside 'runReactor'.
> >  . . .
> > If it would be more appropriate we can try to convert
> > it to Colins' style.

Paul C wrote:
> Converting it to use Reactive instead of Deus (below), it seems to work.
> ---- [ Paul Provides Mods to Convert to Conal Style Reactive ] ----

Paul,

Thanks very much ! 

It works great !

This really helps get us over our learning hurdle(s).
Now it's on to the Robot Wall Follower :-)

Tom

P.S. I had a small problem installing reactive 0.11 
on ghc 6.10.3.
'checkers-0.2' complained about a multiple instance
of Applicative Gen (also defined in QuickCheck) so
I just commented out the instance line in 
checkers-0.2/src/Test/QuickCheck/Applicative.hs




On Sunday 20 September 2009 03:36, you wrote:
> On Thu, Sep 17, 2009 at 05:07:25PM -0700, Tom Poliquin wrote:
> > . . . .
> > This exhibits the same untoward hanging behavior
> > on a blocking read inside 'runReactor'.
> >  . . .
> > If it would be more appropriate we can try to convert
> > it to Colins' style.
>
> In case it helps....
> Converting it to use Reactive instead of Deus (below), it seems to work.
>
> The main change is to use atTimes to generate 'ticker', and to
> redefine constB. (The other changes just swap some arguments in the
> function passed to snapshotWith, which seems to be defined slightly
> differently in Deus). It produces output (increasing temperatures)
> anyway.
>
> Regards
>
> Paul
>
>   5c5
>   < -- Jules Reactive
>   ---
>
>   > -- FRP.Reactive
>
>   7c7,8
>   < import Deus.Reactive
>   ---
>
>   > import FRP.Reactive --was: import Deus.Reactive
>   > import FRP.Reactive.LegacyAdapters
>
>   19c19
>   < constB value = timeFunction (constFun value)
>   ---
>
>   > constB value = fmap (const value) time --was: constB value =
>   > timeFunction (constFun value)
>
>   27c27
>   <                                            (\watts ticker -> (\temp ->
> temp+(watts/100.0))) ---
>
>   >                                            (\ticker watts -> (\temp ->
>   > temp+(watts/100.0))) --swapped args to Lambda Expr.
>
>   36c36
>   <                                    (\temp tick -> (600.0 - temp) /
> 1000.0) ---
>
>   >                                    (\tick temp -> (600.0 - temp) /
>   > 1000.0) --swapped args to Lambda Expr.
>
>   46c46
>   <              (snapshotWith (\t tick -> "\n" ++ show t)
>   ---
>
>   >              (snapshotWith (\tick t -> "\n" ++ show t) --swapped args
>   > to Lambda Expr.
>
>   63c63
>   <     ticker <- timewiseIterate 10000 (+1) 0
>   ---
>
>   >     let ticker = fmap (const 1) (atTimes [0,0.01..] ) --was:  ticker <-
>   > timewiseIterate 10000 (+1) 0
>
>   65c65
>   <     runReactor (furnaceMain ticker)
>   ---
>
>   >     adaptE (furnaceMain ticker)


More information about the Reactive mailing list