Skip to content

Instantly share code, notes, and snippets.

@fizruk
Last active August 29, 2015 14:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save fizruk/02f0644c45c4b446435b to your computer and use it in GitHub Desktop.
Save fizruk/02f0644c45c4b446435b to your computer and use it in GitHub Desktop.
Juxtaposition of fmaps.
-- 3
fmap fmap fmap
= fmap . fmap
-- 4
fmap fmap fmap fmap
= (fmap . fmap) fmap
= fmap (fmap fmap)
-- 5
fmap fmap fmap fmap fmap
= fmap (fmap fmap) fmap
= fmap fmap . fmap
-- 6
fmap fmap fmap fmap fmap fmap
= (fmap fmap . fmap) fmap
= fmap fmap (fmap fmap)
= fmap . fmap fmap
= \f -> fmap (fmap fmap f)
= \f -> fmap (fmap . f)
= fmap . (fmap .)
-- 7
fmap fmap fmap fmap fmap fmap fmap
= (fmap . (fmap .)) fmap
= fmap (fmap . fmap)
-- 8
fmap fmap fmap fmap fmap fmap fmap fmap
= fmap (fmap . fmap) fmap
= fmap . fmap . fmap
-- 9
fmap fmap fmap fmap fmap fmap fmap fmap fmap
= (fmap . fmap . fmap) fmap
= fmap (fmap (fmap fmap))
-- 10
fmap fmap fmap fmap fmap fmap fmap fmap fmap fmap
= fmap (fmap (fmap fmap)) fmap
= fmap (fmap fmap) . fmap
= \f -> fmap (fmap fmap) (fmap f)
= \f -> fmap fmap . fmap f
-- using 2nd functor law: fmap f . fmap g = fmap (f . g)
= \f -> fmap (fmap . f)
= fmap . (fmap .)
= fmap fmap fmap fmap fmap fmap -- 6
-- N >= 10
fmap fmap ... fmap -- N times
= fmap fmap ... fmap -- (N - 4) times
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment