Daniel Bünzli a écrit :
My issue is that the 'reinitialise_with' function is called in a
function 'phi' which is used in the following way:

let message_event = React.E.map phi to_be_parsed_event.

Cannot really make sense out of your snippets of code.

What I want to do is the following:

The server sends events with chunks of string that I want to parse.

I accumulate the string chunks (with React.E.fold) until I can parse some server message out of it.

When some message is parsed, I discard this part of the event, and I install another "accumulating event" (accumulating with React.E.fold).

In order to discard and renew the "accumulating event", I send an event to the event of event. This is why I use the React.E.switch construct.

The output of React.E.switch is an event that can hold, for example the following sequence of values:

My fi
My first mes
My first message. My s

(Here is where the event of event is renewed:)

My s
My secon
My second mess

etc...

However this phi functions seems to invoke a primitive event sending function

Yes. phi is the function that parses the messages from the server. So it has to send an event to renew the "accumulating event".

and that's explicitely prohibited by the documentation. Primitive event
sending/signal setting functions cannot be invoked as side effects
inside update cycles (see doc of E.create/S.create).

OK. So this is not a bug, nor a feature.

Not sure what you are trying to achieve but I suspect fixed point
combinators (E.fix/S.fix) may help you to solve your problem.

I tried to look into this, but I did not see how they could help me with my specific issue.

Best,

Daniel

For now, I'm using a workaround, but I'll try to see how I can make this clean...

Many thanks for your answer.

--
     Guillaume Yziquel
http://yziquel.homelinux.org/

_______________________________________________
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs

Reply via email to