[Haskell-beginners] netwire accum delayed by one

Nathan Hüsken nathan.huesken at posteo.de
Sun Nov 4 14:14:13 CET 2012


Thanks!

I think there is still a bug in there. accumT1 "turns into" accumT after
the first invocation.

Regards,
Nathan

On 11/04/2012 06:22 AM, Ertugrul Söylemez wrote:
> Nathan Hüsken <nathan.huesken at posteo.de> wrote:
> 
>>> Accum is documented to behave like a left scan, which also starts
>>> with the initial value.  The reason is that for most applications
>>> you want the data dependency on the previous instant instead of on
>>> the current. Many useful FRP constructs can be (and are) expressed
>>> in terms of accum and accumT.
>>
>> While I understand the intention, I often have several accums (or
>> integral which is expressed in terms of accum) chained. For example:
>>
>> speed :: WireP CollisionData Vector
>> speed = accum collide initSpeed
>>   where
>>   collide = ...
>>
>> position :: WireP CollisionData Vector
>> position = integral_ initPos . speed
>>
>> which delays the output by 2.
>> Maybe there should also be a "non delaying" version of accum and
>> integral? I must admit, I would prefer it to inset delay manually, but
>> that probably just a matter of taste.
> 
> That's how earlier versions of Netwire worked, where you always needed
> explicit delays, but that turned out to be very noisy in code.  However,
> I see why you may want to have the non-delaying versions, so I have
> added and released them as version 4.0.2.  Along with the change I also
> worked around an apparent Haddock bug, which prevented the documentation
> from being created for GHC 7.6, so now you get Haddocks, too.
> 
> 
> Greets,
> Ertugrul
> 
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
> 




More information about the Beginners mailing list