[Haskell-cafe] Is this functional reactive programming

Kim-Ee Yeoh ky3 at atamo.com
Mon May 11 03:58:55 UTC 2015

On Mon, May 11, 2015 at 7:36 AM, Clinton Mead <clintonmead at gmail.com> wrote:

> The "letSTRef" is what's new. The value it returns can change based on the
> parts that make up it's function changing.

Certainly that sounds very close to FRP, which propounds the concept of
_time-varying_ values.

I understand this syntax above isn't going to work (I'd have to use
> applicative at least I'd imagine) but my main question is that does
> something like this exist?

Let's assume you want to adopt the classic effectful approach to FRP. Now
when you write:

x <- newSTRef 2
y <- newSTRef 3
z <- letSTRef (x + y)

you're really working in a pure fragment. Moreover, letSTRef, while
attractive, is sort of on the wrong track.

Suppose we have two time-varying values mouseX and mouseY. They are both at
least applicative values, i.e. f Int for some applicative, possibly even
monadic, functor f.

They are also primitive, like the way a Haskell Int is primitive and
involves hardware-wired details, meaning you'll do the actual implement at
a lower level than the following:

We have a Euclidean distance function dist :: Int -> Int -> Int.

To track the distance of the mouse pointer from the origin, we'd write
liftA2 dist mouseX mouseY :: f Int, thus deriving another time-varying Int.

Does this help clarify?

-- Kim-Ee
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150511/127b024d/attachment.html>

More information about the Haskell-Cafe mailing list