id summary reporter owner description type status priority milestone version resolution keywords cc
20 Functor instance for Reactive has an error. camio "The current definition:
{{{
instance Functor (ReactiveG t) where
fmap f ~(a `Stepper` e) = f a `stepper` fmap f e
}}}
A reduction for `fmap id _|_`.
{{{
fmap id _|_
stepper (id (case _|_ of (Stepper a _) -> a)) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper (id (case _|_ of (Stepper a _) -> a)) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper (id _|_) (fmap id (case _|_ of (Stepper _ b -> b)))
Stepper _|_ (fmap id (case _|_ of (Stepper _ b -> b)))
}}}
We use http://www.haskell.org/onlinereport/exps.html#sect3.17.3 for the lazy pattern matching.
In section 6.3.5 we have the law for functors that fmap id = id, so
`fmap id _|_ == Stepper _|_ (fmap id (case _|_ of (Stepper _ b -> b))) /= _|_ == id _|_`
The solution is to remove the ~ from the definition." defect new major