:PROPERTIES: :ID: 7a19b34d-c4bb-462b-8fae-581bf06dfdc4 :END: #+title: Functor In [[id:9e68d422-cced-4177-96d1-90f777b9a493][Software Development]], this refers to a parameterized data type that wraps a value in a context and provides a method for applying a function to the wrapped value, independent of the container type. In [[id:9ac78677-2602-4a06-af0a-4ed82e98a9b6][Haskell]], the function for applying a function to a value in a functor is =fmap=, also available as the infix operator =<$>=. #+caption: =fmap= in Haskell #+begin_src haskell :exports code fmap :: Functor f => (a -> b) -> f a -> f b #+end_src * Examples ** Maybe #+caption: Implementation of Functor for Maybe in Haskell #+begin_src haskell :exports code instance Functor Maybe where fmap func (Just n) = Just (func n) fmap func Nothing = Nothing #+end_src