
On 04:33 Tue 28 Apr , Matthew Gruen wrote:
On the other hand, here's an un-pure-able and un-point-able functor:
instance Functor ((,) m) where --fmap :: (n -> n') -> (m, n) -> (m, n') fmap f (m, n) = (m, f n) n -> (m, n) is not a function you can write in general without bottom values (unless you specify that m is a monoid, using mempty). Nor is Pointed in the f () sense, since forall a. (a, ()) isn't something for which a value can be pulled out of thin non-bottom air. But... getting a bit off-topic >_>
Yeah, a good example! Especially, this [1] can't be implemented without pointed: point x = fmap (const x) shape Where does shape come from? It's a "singleton element" of the functor, right? So we'll need Pointed. Especially: How (const x) is applied greatly depends on the functor and on shape. Consider the list functor and shape = repeat () against shape = [()] against shape = [] Steffen [1] http://thread.gmane.org/gmane.comp.lang.haskell.cafe/54685