Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
pp:functors [2021/04/19 11:19]
lfa [1. Example: the Maybe functor]
pp:functors [2021/04/21 15:51] (current)
alexandru.rait Changed 6 to 7 in title
Line 1: Line 1:
-====== ​6. Functors, Foldables ======+====== ​7. Functors, Foldables ======
  
 Functors are data types over which we can ''​map''​ a function (that is, apply a function on each element while keeping the overall structure). You've already encountered a Functor, namely haskell lists. For historical reasons, ''​map''​ only works on lists (''​map :: (a -%%>%% b) -%%>%% [a] -%%>%% [b]''​),​ but there exists a more general function ''​fmap''​ (''​fmap :: (Functor f) =%%>%% (a -%%>%% b) -%%>%% f a -%%>%% f b''​). Functors are data types over which we can ''​map''​ a function (that is, apply a function on each element while keeping the overall structure). You've already encountered a Functor, namely haskell lists. For historical reasons, ''​map''​ only works on lists (''​map :: (a -%%>%% b) -%%>%% [a] -%%>%% [b]''​),​ but there exists a more general function ''​fmap''​ (''​fmap :: (Functor f) =%%>%% (a -%%>%% b) -%%>%% f a -%%>%% f b''​).