[Haskell-cafe] Functor instance for FunPB

David Kraeutmann kane at kane.cx
Sat May 6 18:38:13 UTC 2017


The only lawful instance I can think of is:
instance Functor (FunPB a) where
  fmap f (FunPB g) = FunPB $ \k -> let (a,b) = g k in (a, fmap f b)

which is fairly straightforward IMO.


On 2017-05-06 19:50, Alex Wede wrote:
> Hey Everyone,
> 
> 
> ich have a algebraic data type:
> 
> 
> data FunPB a b = FunPB { runFunPB :: a -> (a,[b]) }
> 
> 
> I got a Monoid Instance
> 
> instance Monoid (FunPB a b) where
>   mempty  = FunPB $ \k -> (k,mempty)
>   mappend pb1 pb2 = FunPB $ \n -> (,) n $ msum . (<$>) (uncurry (flip
> const).((flip runFunPB) n)) $ [pb1,pb2]
> 
> Now I need to write a functor instance
> 
> instance Functor (FunPB a) where
> 
>     fmap f b = ?
> 
> 
> How can I map over a->(a,[b])?
> 
> 
> Lg
> 
> Alex
> 
> _______________________________________________
> Haskell-Cafe mailing list
> To (un)subscribe, modify options or view archives go to:
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
> Only members subscribed via the mailman list are allowed to post.


More information about the Haskell-Cafe mailing list