On Dec 14, 2007 6:37 PM, Benja Fallenstein <[EMAIL PROTECTED]> wrote:
> such that the following two properties hold:
>
>     * F(idX) = idF(X) for every object X in C
>     * F(g . f) = F(g) . F(f) for all morphisms f:X -> Y and g:Y -> Z."

Should we write

instance Functor Val where
  fmap = undefined

Would those properties be satisfied? Of course,

fmap (g . f) == _|_ == fmap g . fmap f,

but

fmap id x == _|_ =/= x == id x.

As my understanding of the relationship between bottoms and
non-bottoms isn't that great, could anyone tell me if the above
instance is sound (i.e. satisfy the expected properties)? If it is
not, the implementation "fmap f = id" is really the only one sound,
right?

Thanks!

-- 
Felipe.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to