[Haskell-cafe] What is this applicative functor?

Joachim Breitner mail at joachim-breitner.de
Tue Jan 31 20:36:00 UTC 2017


Hi,

good idea, but no. The datatypes are superficially equivalent, but the
Applicative instance differs:

With NonEmpty’s instance:

> (,) <$> 0 :| [1,2] <*> 3 :| [4,5]
(0,3) :| [(0,4),(0,5),(1,3),(1,4),(1,5),(2,3),(2,4),(2,5)]

with my instance:

> (,) <$> 0 :| [1,2] <*> 3 :| [4,5]
(0,3) :| [(1,3),(2,3),(0,4),(0,5)]

Greetings,
Joachim

Am Dienstag, den 31.01.2017, 14:24 -0600 schrieb Christopher Allen:
> NonEmpty?
> 
> On Tue, Jan 31, 2017 at 2:22 PM, Joachim Breitner
> <mail at joachim-breitner.de> wrote:
> > Hi,
> > 
> > I recently wrote this applicative functor:
> > 
> >     data OneStep a = OneStep a [a]
> > 
> >     instance Functor OneStep where
> >         fmap f (OneStep o s) = OneStep (f o) (map f s)
> > 
> >     instance Applicative OneStep where
> >         pure x = OneStep x []
> >         OneStep f fs <*> OneStep x xs = OneStep (f x) (map ($x) fs
> > ++ map f xs)
> > 
> >     takeOneStep :: OneStep t -> [t]
> >     takeOneStep (OneStep _ xs) = xs
> > 
> > This was useful in the context of writing a shrink for QuickCheck,
> > as
> > discussed at http://stackoverflow.com/a/41944525/946226.
> > 
> > Now I wonder: Does this functor have a proper name? Does it already
> > exist in the libraries somewhere? Should it?
> > 
> > Greetings,
> > Joachim
> > 
> > --
> > Joachim “nomeata” Breitner
> >   mail at joachim-breitner.dehttps://www.joachim-breitner.de/
> >   XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
> >   Debian Developer: nomeata at debian.org
> > _______________________________________________
> > 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.
> 
> 
> 
-- 
Joachim “nomeata” Breitner
  mail at joachim-breitner.dehttps://www.joachim-breitner.de/
  XMPP: nomeata at joachim-breitner.de • OpenPGP-Key: 0xF0FBF51F
  Debian Developer: nomeata at debian.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20170131/1e1ed1b4/attachment.sig>


More information about the Haskell-Cafe mailing list