[Haskell-cafe] What is this applicative functor?
Joachim Breitner
mail at joachim-breitner.de
Tue Jan 31 20:22:35 UTC 2017
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.de • https://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/6b5ddeb7/attachment.sig>
More information about the Haskell-Cafe
mailing list