Causality for free!: parametricity implies causality for functional reactive programs
the java language specification .