[Haskell-cafe] Functor0?

Tony Morris tonymorris at gmail.com
Mon Jan 16 06:29:49 CET 2012


On 01/16/2012 03:26 PM, Evan Laforge wrote:
> Often when I define some type that wraps something else, I find myself writing
> a function like the following:
>
> newtype Thing = Thing X
> liftThing f (Thing x) = Thing (f x)
>
> It's like a Functor, but I can't make it an instance because Functor
> requires that the type be parametric.  So I've been using type families to
> make a kind of "0 argument functor":
>
> class Functor0 a where
>     type Elem a :: *
>     fmap0 :: (Elem a -> Elem a) -> a -> a
>
> instance Functor0 Thing where
>     type Elem Thing = X
>     fmap0 = liftThing
>
> Is there a name for this?  A better way to do it?
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
?
http://hackage.haskell.org/packages/archive/newtype/0.2/doc/html/Control-Newtype.html
?

-- 
Tony Morris
http://tmorris.net/





More information about the Haskell-Cafe mailing list