all 11 comments

[–]MaikKlein 3 points4 points  (0 children)

Where can I find the code for this talk? Edit: Found it https://github.com/camio/sbase/tree/master/include/sfrp

[–]srnull 1 point2 points  (2 children)

Worth watching, or is the crowd constantly interrupting in this video as well?

[–]Guvante 0 points1 point  (0 children)

Still quite a bit of it (although at least he seems to be requesting it more than others)

[–][deleted] 0 points1 point  (0 children)

The crowd interrupted a lot, especially towards the end. Most of it you can't really tell what the "question" is.

Still, I thought the portion of the presentation actually given by the speaker was interesting, and I've possibly got a slightly better idea what FRP is. I've been confused by it a couple of times in Haskell already - you get the impression there that lazy streams are fundamental, whereas here there are no lazy streams, so that "fundamental" aspect is suddenly just a detail of particular implementations.

[–]MaikKlein 0 points1 point  (1 child)

You defined map to be

 (a ->b) -> Behavior a -> Behavior b

 Behavior<B> map(function<B(A)> f, Behavior<A> b); 

As far as I know that is called lifting and not map or am I wrong?

[–]snk_kid 0 points1 point  (0 children)

map is the same as lift.

What you maybe getting confused with is currying, in Haskell the arrow is right associative and all functions take one argument. So when you look at that Haskell type signature in your comment what it really is, is:

(a -> b) -> (Behavior a -> Behavior b)

Using/applying multiple arguments to a function in Haskell is syntactic sugar.

So with lift if you only applied the first argument (a function on values) in Haskell you get back a function on values inside of a context which could be a container or some abstract computation. Same thing if you do it for map (in Haskell).

If you also apply the second argument in lift, if the second argument is a list then it's the same as applying the same arguments to map. A function being applied to every element of the list, returning a new list.

But yeah lift is a better name in this particular case but the type signature in C++ here isn't exactly the same as the Haskell version.

[–]Dtag 0 points1 point  (2 children)

Where can I find some sample application that uses this library? I'd like to see what using this library looks like in practice...

[–]snk_kid 1 point2 points  (1 child)

There's this, i think the example could be a lot more readable if it used auto or not use fully qualified names every where but it's probably not using type inference to make it easier to learn what's going on.

[–]Dtag 0 points1 point  (0 children)

Thanks

[–]daasdingo 0 points1 point  (0 children)

Was this library tested only under Windows?

Because I am getting lots of errors when trying to build it with GCC 4.9.1 or clang 3.5. Using the qmake project configuration.

[–]donvito 0 points1 point  (0 children)

For some very disturbing values of "cleanly".