Synchronous reactive programming