[Haskell-cafe] Tetris

Laurent Deniau laurent.deniau at cern.ch
Fri Nov 23 03:09:53 EST 2007

Conal Elliott wrote:
> On Nov 21, 2007 3:49 AM, Laurent Deniau <laurent.deniau at cern.ch 
> <mailto:laurent.deniau at cern.ch>> wrote:
>  > Peter Verswyvelen wrote:
>  > > Conal Elliott wrote:
>  > >> Moreover, functional programming makes it easy to have much more 
> state
>  > >> than imperative programming, namely state over *continuous* time.  The
>  > >> temporally discrete time imposed by the imperative model is pretty
>  > >> puny in comparison.  Continuous (or "resolution-independent") time 
> has
>  > >> the same advantages as continuous space: resource-adaptive, scalable,
>  > >> transformable.
>  > > Yes, that's true, but isn't that also the problem with FRP? I mean, 
> most
>  > > of the papers I'm reading about (A)FRP indicate that no matter how 
> nice
>  > > it is to have the continuous time model
>  > I agree with Conal, it's not a continuous time model but a
>  > resolution-independent time model.
> What do mean by resolution-independent vs continuous? 

I mean time may or may not be part or the model in FRP.

> I meant them more-or-less synonymously.  Semantically, there's no notion 
> of resolution.  When it's time to introduce a resolution for discrete 
> rendering, there's no resolution imposed by the model.

Right. This is why I do not see the relation with the number of bits in 
a float. Time could be represented by states, in the sens of a state 
machine with asynchronous events.

>  >                                     The reason it that Arrows (like
>  > Monads) encapsulate the sequence of transitions.  Unless the time is a
>  > parameter of the transition, it is independent of the time (resolution),
>  > but still captures its ordered nature.
> I'm confused again. I don't think of Arrow as implying transitions at all.

I call a transition the operator >>= for Monad, and arr for Arrow. I was 
maybe not clear in this point. The correct wording might be a computation.

>  > > to get fine grained control
>  > > over execution times and resources, one needs to fall back to the
>  > > discrete delta-time approach?
>  > If you need synchronization, yes.
> Why?  What about synchronization implies discretness in the model?

Because it requires either specific states which are aware of each other 
(asynchronous events), or a known delta-time. How do you synchronize 
continuous events (I would says more continuous processes) ?



More information about the Haskell-Cafe mailing list