25 lines
850 B
Org Mode
25 lines
850 B
Org Mode
: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
|